Re: Running a query to identify clashes



You've got a lot of conditions in that If statement. Are they all on the
same line (and it's wrapped in your post), or are they really on separate
lines? They need to be all on one line, or else you need to use continuation
characters:

If ((Me.VehicleID = Me.VehicleID.OldValue) _
And(Me.BookingOutDateAndTime = Me.BookingOutDateAndTime.OldValue) _
And(Me.BookingReturnDateAndTime = _
Me.BookingReturnDateAndTime.OldValue)) _
Or IsNull(Me.VehicleID) _
Or IsNull (Me.BookingOutDateAndTime) _
Or IsNull (Me.BookingReturnDateAndTime)Then

As well, regardless of your regional settings, you cannot use dd/mm/yyyy in
SQL statements (and even if you could, your strcJetDate is still incorrect).
Change it to

Const strcJetDate = "\#mm\/dd\/yyyy hh\:mm\:ss\#"

or

Const strcJetDate = "\#yyyy\-mm\-dd hh\:mm\:ss\#"

If you were hoping to only compare down to the minute, ignoring seconds, you
can't do it in that way. You'd have to use

strWhere = "(VehicleID = " & Me.VehicleID & ")AND
(Format(BookingOutDateAndTime, "yyyymmddhhnn") < " &
Format(Me.BookingReturnDateAndTime, "yyyymmddhhnn")
& ") AND (" & Format(Me.BookingOutDateAndTime, "yyyymmddhhnn") & " <
Format(BookingOutDateAndTime, "yyyymmddhhnn") AND (BookingID <> " &
Me.BookingID & ")"


--
Doug Steele, Microsoft Access MVP
http://I.Am/DougSteele
(no private e-mails, please)


"Hicksy" <Hicksy@xxxxxxxxxxxxxxxxxxxxxxxxx> wrote in message
news:23A8D3D1-BC65-431D-9D51-A388BADD6700@xxxxxxxxxxxxxxxx
Thanks Allen.
I have tried the code but i am getting several errors such as "syntax
error", "Expected: line number 0r label or statement or end of statement".
I have copied my code below:
Any more help would be really appreciated!
Private Sub Form_BeforeUpdate(Cancel As Integer)
Dim strWhere As String
Dim varResult As Variant
Const strcJetDate = "\#dd\/mm\/yyyy\/hh\/mm\#"

If ((Me.VehicleID = Me.VehicleID.OldValue)
And(Me.BookingOutDateAndTime = Me.BookingOutDateAndTime.OldValue)
And(Me.BookingReturnDateAndTime =
Me.BookingReturnDateAndTime.OldValue))
Or IsNull(Me.VehicleID)
Or IsNull (Me.BookingOutDateAndTime)
Or IsNull (Me.BookingReturnDateAndTime)Then
'do nothing
Else
strWhere = "(VehicleID = " & Me.VehicleID & ")AND
(BookingOutDateAndTime < " & Format(Me.BookingReturnDateAndTime,
strcJetDate)
& ") AND (" & Format(Me.BookingOutDateAndTime, strcJetDate) & " <
BookingOutDateAndTime) AND (BookingID <> " & Me.BookingID & ")"
varResult = DLookup("BookingID", "tblBookings", strWhere)
If Not IsNull(varResult) Then
Cancel = True
MsgBox "Clash with booking " & varResult & "."
End If
End If
End Sub

"Allen Browne" wrote:

If you are referrring to the query in:
Clashing Events/Appointments
at:
http://allenbrowne.com/appevent.html
that query checks every record in the table against every other record to
identify any clashes.

If you are only interested in the record that's about to be saved, you
only
need to compare that one against all the others, so the Cartesian query
is
not needed.

--
Allen Browne - Microsoft MVP. Perth, Western Australia
Tips for Access users - http://allenbrowne.com/tips.html
Reply to group, rather than allenbrowne at mvps dot org.

"Hicksy" <Hicksy@xxxxxxxxxxxxxxxxxxxxxxxxx> wrote in message
news:EA011393-443A-4F58-BB0E-228BC89DF35C@xxxxxxxxxxxxxxxx
Many thanks Allen.
It was your query I used to establish clashing appointments!
Do i need the query at all then?

thanks
"Allen Browne" wrote:

Use the BeforeUpate event procedure of the Form where the entry is
made.
Use
DLookup() to see if there is a clashing entry.

For help with DLookup(), see:
http://allenbrowne.com/casu-07.html
The basic idea is that there is a clash if:
- this booking starts before the other one ends, and
- the other one starts before this one ends, and
- it's the same vehicle, and
- it's not clashing with itself.

So it will be something like this aircode:

Private Sub Form_BeforeUpdate(Cancel As Integer)
Dim strWhere As String
Dim varResult As Variant
Const strcJetDate = "\#mm\/dd\/yyyy\#"

If ((Me.VehicleID = Me.VehicleID.OldValue) _
And (Me.StartDate = Me.StartDate.OldValue) _
And (Me.EndDate = Me.EndDate.OldValue)) _
Or IsNull(Me.VehicleID) _
Or IsNull(Me.StartDate) _
Or IsNull(Me.EndDate) Then
'do nothing
Else
strWhere = "(VehicleID = " & Me.VehicleID & _
") AND (StartDate < " & Format(Me.EndDate, strcJetDate) &
_
") AND (" & Format(Me.StartDate, strcJetDate) & _
" < EndDate) AND (ID <> " & Me.ID & ")"
varResult = DLookup("ID", "BookingTable", strWhere)
If Not IsNull(varResult) Then
Cancel = True
MsgBox "Clash with booking " & varResult & "."
End If
End If
End Sub

--
Allen Browne - Microsoft MVP. Perth, Western Australia
Tips for Access users - http://allenbrowne.com/tips.html
Reply to group, rather than allenbrowne at mvps dot org.

"Hicksy" <Hicksy@xxxxxxxxxxxxxxxxxxxxxxxxx> wrote in message
news:90326A82-6234-4DBF-8925-C4CA108CE931@xxxxxxxxxxxxxxxx
Hi
I am creating a Vehicle Bookings database and have created a query
which
identifies any clashes for bookings of vehicles to eliminate double
bookings.
When a user books a car, i would like the database to check with the
query
to see if the vehicle is available and if it is, accept the booking.
If
it
is
already booked, i would like a message to appear telling the user to
try
another time or another car.
COuld someone please help me with this please?
I have nearly finished it and this is one of the few final problems
i
have!

Many thanks






.



Relevant Pages

  • Re: Running a query to identify clashes
    ... need to compare that one against all the others, so the Cartesian query is ... Tips for Access users - http://allenbrowne.com/tips.html ... I am creating a Vehicle Bookings database and have created a query ...
    (microsoft.public.access.queries)
  • Re: Running a query to identify clashes
    ... that query checks every record in the table against every other record to identify any clashes. ... Tips for Access users - http://allenbrowne.com/tips.html ... > I am creating a Vehicle Bookings database and have created a query> which ... > identifies any clashes for bookings of vehicles to eliminate double ...
    (microsoft.public.access.queries)
  • How to display rows that do not fall within 2 dates in a different
    ... create a query that displays all the vehicles which do not fall within 2 ... Also, if possible, I would like to add the condition that a Vehicle cannot ... Vehicle1 cannot appear for Bookings between 10 January ... I would be most extremely grateful for any help. ...
    (microsoft.public.access.queries)
  • Re: which type of query
    ... you will certainly be better off if you can put all the bookings into ... you can create a UNION query that combines the ... SELECT BookingDate, CustomerID FROM Table1 ... Tips for Access users - http://allenbrowne.com/tips.html ...
    (microsoft.public.access.queries)
  • RE: Date Tracking Query
    ... "sonofroy" wrote: ... "KARL DEWEY" wrote: ... Your query indicates you made it all one table. ... When someone requests a vehicle I want to run the query and only ...
    (microsoft.public.access.queries)

Loading