Conflicting reservation problem

Sketchin

Registered User.
Local time
Yesterday, 16:55
Joined
Dec 20, 2011
Messages
577
Hey All, I have some code that lets me know when I add parts to a reservation that is conflicting with an existing reservation. Its in the after update event of my subform and fires after I add an item to a reservation. The problem is I can't figure out how to get the warning message to only show up once. There is potentially a time when I would intentionally double book something, so I don't want that message to continually pop up as I am adding items.

Here is my code:
Code:
Private Sub CboBOMDescription_AfterUpdate()

Dim strSQL As String
Dim strSQL2 As String
Dim ClashCount As Integer

'Set up variables for testing clashing reservations
Dim rst As DAO.Recordset
Dim db As DAO.Database
Dim FindRecordCount As Integer
Dim ConflictingResNumber As Date
'set this to flag whether or not a warning has been issued for a conflict
Dim WarningCount As Integer
Dim ReservationConflict As Integer

Set db = CurrentDb

If Me.Dirty Then Me.Dirty = False

'SQL to update reservation table if the reservation is for a nonportfolio client
'If its a billable reservation, set the yes/no box to yes
strSQL = "UPDATE tblReservations SET tblReservations.Billable = -1" & _
         " WHERE(((tblReservations.ReservationID)=[Forms]![frmReservations]![TxtReservationID]))"
'Run update query if reservation is billable
If Me!TxtLeaseCost > 0 Then
DoCmd.RunSQL (strSQL)
Else
End If

'SQL statement to return records where reservations are clashing

strSQL2 = "SELECT (([tblReservations_1].[DateOutReq]>[tblReservations].[DateInReq]) Or " & _
            " ([tblReservations_1].[DateInreq]<[tblReservations].[DateOutreq])) Or " & _
            "([tblReservation_Details].[BOMNumber]<>[tblReservation_Details_1].[BOMNumber]) Or " & _
            "([tblReservation_details].[ReservationID]=[tblReservation_Details_1].[ReservationID])  AS " & _
            "NoClash, tblReservation_details.BOMNumber, tblReservation_details_1.BOMNumber, " & _
            "tblReservations.DateOutReq, tblReservations_1.DateOutReq, tblReservations.DateInReq, " & _
            "tblReservations_1.DateInReq, tblReservation_details_1.ReservationID, tblReservation_details.ReservationID, " & _
            "Count (tblReservations.[reservationID]) AS [Count] " & _
            "FROM tblReservations AS tblReservations_1 INNER JOIN tblReservation_details AS " & _
            "tblReservation_details_1 ON tblReservations_1.ReservationID = tblReservation_details_1.ReservationID, " & _
            "tblReservations INNER JOIN tblReservation_details ON tblReservations.ReservationID = tblReservation_details.ReservationID " & _
            "Group BY [tblReservations_1].[DateOutReq] > [tblReservations].[DateInReq] Or " & _
            "[tblReservations_1].[DateInReq] < [tblReservations].[DateOutReq] Or " & _
            "[tblReservation_details].[BomNumber] <> [tblReservation_Details_1].[BomNumber] Or " & _
            "[tblReservation_details].[ReservationID] = [tblReservation_Details_1].[ReservationID], " & _
            "tblReservation_details.BomNumber, tblReservation_Details_1.BomNumber, tblReservations.DateOutReq, " & _
            "tblReservations_1.DateOutReq, tblReservations.DateInReq, tblReservations_1.DateInReq, " & _
            "tblReservation_Details_1.ReservationID, tblReservation_details.ReservationID, tblReservations.ReservationID " & _
            "HAVING ((((([tblReservations_1].[DateOutReq]>[tblReservations].[DateInReq]) Or " & _
            "([tblReservations_1].[DateInreq]<[tblReservations].[DateOutreq])) Or " & _
            "([tblReservation_Details].[BOMNumber]<>[tblReservation_Details_1].[BOMNumber]) Or " & _
            "([tblReservation_details].[ReservationID]=[tblReservation_Details_1].[ReservationID])) = False) AND " & _
            "((tblReservations.ReservationID) = " & [Forms]![frmReservations].[TxtReservationID] & " ));"

Set rst = db.OpenRecordset(strSQL2)

If rst.EOF Then
' If there are no records there are no conflicts, so we can exit.
      FindRecordCount = 0
   Else
      rst.MoveLast
      FindRecordCount = rst.RecordCount
   End If

'If query returns a record it means that there is a conflict
If FindRecordCount > 0 Then

'Notify the user that there is a conflict
ReservationConflict = MsgBox("This item conflicts with another reservation, click OK to view the conflicting reservation", vbOKCancel, "DANGER WILL ROBINSON")

If ReservationConflict = 1 Then
'Do something
Else

End If
End If
   rst.Close
   db.Close

   Set rst = Nothing
   Set db = Nothing

End Sub
 

Users who are viewing this thread

Back
Top Bottom