John W. Colby
jwcolby at colbyconsulting.com
Fri Mar 18 06:37:50 CST 2005
Option Compare Database Option Explicit '. '.========================================================================= '.Copyright : CColby Consulting 2001. All rights reserved. '.E-mail : jcolby at ColbyConsulting.com '.========================================================================= ' DO NOT DELETE THE COMMENTS ABOVE. All other comments in this module ' may be deleted from production code, but lines above must remain. '-------------------------------------------------------------------------- '.Description : '.Written By : John W. Colby '.Date Created : 06/08/2001 '.Rev. History : '.Comments : This module provides an "appointment collision" checking 'routine. Any two records with start and stop times and dates can be fed into 'this function to check for a collision. '.------------------------------------------------------------------------- '. ' ADDITIONAL NOTES: ' '*+ custom constants declaration Private Const mcstrModuleName As String = "basCollisionCheck" Const DebugPrint = True '*- Custom constants declaration '*+ custom Variables declaration '*- custom Variables declaration ' 'Comments : THANKS TO LEMBIT SOOBIK 'there is a 'simple' equation which defines a conflict in appointments: 'let's name the starting point of an existing appointment Se, endpoint Ee 'and for the new appointment to be tested the starting point St, endpoint Et 'now you can simply check ' 'If St < Ee AND Et > Se ' 'then you have a conflict. 'you can easily visualize that by following drawing ' '_________Se______Ee______ '1_St__Et '2_St_________Et '3_St__________________Et '4___________St_Et '5___________St________Et '6_____________________St__Et ' 'As you can see, only cases 2, 3, 4, 5 have a conflict. case 1 does not have a conflict 'because it ends before the existing one starts (Et < Se) and 6 does not have a conflict 'since it starts after the existing ends (St > Ee. ' 'Parameters: 'Sets : 'Returns : 'Created by: Colby Consulting 'Created : 6/25/99 11:43:56 AM Function ccApptCollision(IDNew As Long, dtmSTNew As Date, dtmETNew As Date, _ IDExist As Long, dtmSTExist As Date, dtmETExist As Date) As Boolean On Error GoTo Err_ccApptCollision ' If IsNull(dtmSTNew) Or IsNull(dtmSTExist) Then ' ccApptCollision = False ' Exit Function ' End If 'CHECK IF WE ARE COMPARING A RECORD TO ITSELF If IDNew = IDExist Then ccApptCollision = False Exit Function End If 'CHECK FOR COLLISIONS If (dtmSTNew <= dtmETExist) And (dtmETNew >= dtmSTExist) Then ccApptCollision = True Else ccApptCollision = False End If Exit_ccApptCollision: On Error Resume Next Exit Function Err_ccApptCollision: Select Case err Case 0 'insert Errors you wish to ignore here Resume Next Case Else 'All other errors will trap Beep msgbox err.description ' LogError mcstrModuleName, err.Number, err.Description, "Error in function Module1.ccApptCollision" Resume Exit_ccApptCollision End Select Resume 0 'FOR TROUBLESHOOTING End Function John W. Colby www.ColbyConsulting.com Contribute your unused CPU cycles to a good cause: http://folding.stanford.edu/ -----Original Message----- From: accessd-bounces at databaseadvisors.com [mailto:accessd-bounces at databaseadvisors.com] On Behalf Of paul.hartland at fsmail.net Sent: Friday, March 18, 2005 7:20 AM To: accessd Subject: [AccessD] Is one time between two other times To all, I can't seem to figure this out at all, I have a table of which one of the fields is a start time. I need to run a query to see if that time is between 07:00 and 19:00 or 19:00 and 07:00. Can any help me with this please. Thanks in advance for your help. Paul Hartland -- Whatever you Wanadoo: http://www.wanadoo.co.uk/time/ This email has been checked for most known viruses - find out more at: http://www.wanadoo.co.uk/help/id/7098.htm -- AccessD mailing list AccessD at databaseadvisors.com http://databaseadvisors.com/mailman/listinfo/accessd Website: http://www.databaseadvisors.com