Probleem met tijd

Status
Niet open voor verdere reacties.

drieder

Gebruiker
Lid geworden
11 jan 2007
Berichten
34
Hallo

Ik zit met een probleem

ik heb een boekings systeem in acces

nu is het zo dat ik een een klant een artiest meerdere keren kan boeken op dezelfde tijd.

bv
Jan smit bij klant Jansen

02-jan-07 om begintijd = 10.30 eindtijd =11.00

nu kan een andere klant smits jan smit boeken op

02-jan-07 om begintijd = 10.35 tot eintijd 11.10

dit gaat dus niet werken omdat jan smit dan al bij klant jansen is.


Hoe los ik dit op
 
Even een stukje code schrijven onder het BeforeUpdate event (voor bijwerken gebeurtenis) van het formulier waarop je de boekingen invoert.
Rechtstreeks uit de access help gekopieerd:

Private Sub ProductName_BeforeUpdate(Cancel As Integer)
If(Not IsNull(DLookup("[ProductName]", _
"Products", "[ProductName] ='" _
& Me!ProductName & "'"))) Then
MsgBox "Product has already been entered in the database."
Cancel = True
Me!ProductName.Undo
End If
End Sub
 
ok thnx :)

maar zou je mischien deze code kunnen invoeren met mij gegevens.Ik weet dat ik veel vraag maar het is heel belangrijk voor mij omdat dit voor mijn eindexamen is.

mijn gegevens :

De tabel waar de gevens uit worden gehaald in het formulier boeking

tabel boekingen
Boeking_id
Evenement_id
Klant_id
Artiest_id (key)
Begintijd (key)
Eindtijd

relaties scherm
51351_e9b6914b98.jpg
 
Even een stukje code schrijven onder het BeforeUpdate event (voor bijwerken gebeurtenis) van het formulier waarop je de boekingen invoert.
Rechtstreeks uit de access help gekopieerd:

Private Sub ProductName_BeforeUpdate(Cancel As Integer)
If(Not IsNull(DLookup("[ProductName]", _
"Products", "[ProductName] ='" _
& Me!ProductName & "'"))) Then
MsgBox "Product has already been entered in the database."
Cancel = True
Me!ProductName.Undo
End If
End Sub

ik heb de code in mijn database ingevoert en het werkt

Private Sub Begintijd_BeforeUpdate(Cancel As Integer)
If (Not IsNull(DLookup("[Begintijd]", _
"Boekingen", "[Begintijd] =#" _
& Me!Begintijd & "#"))) Then
MsgBox "Artiest is al geboekt op deze tijd."
Cancel = True
Me!Begintijd.Undo
End If
End Sub


Maar dit is verkeerd , deze code voert uit dat er maar 1 keer om 10.00 geboekt kan worden dus de datum maakt ook niet uit je kan nu alleen maar 1 keer om 10.00 boeken.

probleem 1 is dus je kan maar 1 keer om 10 uur boeken in het systeem

probleem 2 je kan wel om 10.10 boeken
 
Code:
If (Not IsNull(DLookup("[Begintijd]", "Boekingen", "[Begintijd] =#" & Me!Begintijd & "#")))

deze uitbreiden met een artisten id dan word hij artiest specifiek
 
Code:
If (Not IsNull(DLookup("[Begintijd]", "Boekingen", "[Begintijd] =#" & Me!Begintijd & "#")))

deze uitbreiden met een artisten id dan word hij artiest specifiek


Dan moet ik wel weten hoe Artiest_id erbij moet op welke plaats in de code..zou je Artiest_id voor mij in de code willen toevoegen
 
Code:
If (Not IsNull(DLookup("[Begintijd]", "Boekingen", "[Begintijd] =#" & Me!Begintijd & "# And [Artiest_id]=" & jouvariabele)))

Zoiets ?
 
Allereerst is het de volgende keer ook handig als je verteld om welk form het gaat en wat en wanneer er iets moet gebeuren.

Tevens is het zo dat als je een formulier handmatig bouwt dat je dan net zo als in de tabel de juiste naamgeving kiest.

En dus niet in jou geval “Keuzelijst met invoervak18” is dan niet optimaal als je begrijpt wat ik bedoel.

Ik heb hem even hernoemd naar "txtLijstKeuzeArtiest"

Als je dan deze code gebruikt

Code:
Private Sub Begintijd_BeforeUpdate(Cancel As Integer)
    
    If (Not IsNull(DLookup("[Begintijd]", _
        "Boekingen", _
        "[Begintijd] =#" & Me!Begintijd & _
        "# And [Artiest_id]=" & txtLijstKeuzeArtiest))) Then
        
        MsgBox "Dubbele Boeking", vbOKOnly
    
    End If
    
End Sub

Zul je zien dat waneer er een dubbele boeking gepland word dat er een melding komt.

Nou meer helpen als dit kan ik niet want dan moet ik achter je pc gaan zitten :p
 
Allereerst is het de volgende keer ook handig als je verteld om welk form het gaat en wat en wanneer er iets moet gebeuren.

Tevens is het zo dat als je een formulier handmatig bouwt dat je dan net zo als in de tabel de juiste naamgeving kiest.

En dus niet in jou geval “Keuzelijst met invoervak18” is dan niet optimaal als je begrijpt wat ik bedoel.

Ik heb hem even hernoemd naar "txtLijstKeuzeArtiest"

Als je dan deze code gebruikt

Code:
Private Sub Begintijd_BeforeUpdate(Cancel As Integer)
    
    If (Not IsNull(DLookup("[Begintijd]", _
        "Boekingen", _
        "[Begintijd] =#" & Me!Begintijd & _
        "# And [Artiest_id]=" & txtLijstKeuzeArtiest))) Then
        
        MsgBox "Dubbele Boeking", vbOKOnly
    
    End If
    
End Sub

Zul je zien dat waneer er een dubbele boeking gepland word dat er een melding komt.

Nou meer helpen als dit kan ik niet want dan moet ik achter je pc gaan zitten :p


Jah ik begrijp wat je bedoelt :) en het werkt ook , maar nu is het probleem nog steeds niet opgelost want,

als Adje 01-01-07 10.00 tot 11.00 is geboekt
kan een andere klant hem ook boeken maar dan Adje 01-01-07 10.10 tot 11.00

dit kan dus nie want dan is hij al bij die andere klant
 
ja dit komt omdat je alleen op de exacte begin tijd filtert ik weet niet of het werkt maar misschien kun je hem uitbreiden met een "Between in de criteria".

Maar is het niet veel makkelijker om een Parameter query te bouwen die doet wat je wil dan de sql te kopieren en deze aante passen waar nodig in vba en dan middels DoCmd.RunSql uit te voeren en als dit werkt via Docmd.setwarnings de Meldingen weg te poetsen?
 
ja dit komt omdat je alleen op de exacte begin tijd filtert ik weet niet of het werkt maar misschien kun je hem uitbreiden met een "Between in de criteria".

Maar is het niet veel makkelijker om een Parameter query te bouwen die doet wat je wil dan de sql te kopieren en deze aante passen waar nodig in vba en dan middels DoCmd.RunSql uit te voeren en als dit werkt via Docmd.setwarnings de Meldingen weg te poetsen?


HIer zit ik dus al 2 weken op :p en het lukt maar niet , mrj ik denk dat ik een beetje te veel vraag.

in iedergeval bedankt voor de moeite
 
Kijk hier eens naar even Quick & Dirty gemaakt voor je maar volgens mij is dit de mooiste manieer zo zie je gelijk dat je geen dubbele afspraak maakt maar als je het uitbreid met plaats heb je ook niet het probleem dat iemand in 10 minuten van groningen naar Amstersam hoeft. Eventueel zou je de andere code ook nog kunnen gebruiken om nog meer controles ui te voeren.

Greetz zRowix
 

Bijlagen

  • test.zip
    36,2 KB · Weergaven: 23
Kijk hier eens naar even Quick & Dirty gemaakt voor je maar volgens mij is dit de mooiste manieer zo zie je gelijk dat je geen dubbele afspraak maakt maar als je het uitbreid met plaats heb je ook niet het probleem dat iemand in 10 minuten van groningen naar Amstersam hoeft. Eventueel zou je de andere code ook nog kunnen gebruiken om nog meer controles ui te voeren.

Greetz zRowix


Beste zRowix

het is mij gelukt , ik moet het maar opdeze manier oplossen dan.:)
hartelijke dank voor je hulp.
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan