S D
accessd667 at yahoo.com
Tue Nov 2 07:02:08 CST 2004
Thnx Gustav (as always) However, I added some extra checks to rule out 'impossible dates' like 29,30 or 31 februari, 31 november, etc. Gustav Brock <gustav at cactus.dk> wrote: Hi Sander If you operate with one format only (dd-mm-yyyy) then you can follow this route: 1. Check that it represents a valid date with IsDate(txtExportDate) 2. If so, convert to date and reformat: datDate = CDate(txtExportDate) strDate = Format(datDate, "dd-mm-yyyy") Now, compare the strings: If StrComp(txtExportDate, strDate) = 0 Then ' Date string is OK. End If The last step may not be necessary as it will insist on date strings like 02-09-2004 where 2-9-04 would be valid as well. The reformat, though, is needed to catch strings like 12-20-2004 which IsDate() accepts as 20-12-2004. /gustav > I created a routine that checks if a date is correct. Can anybody review this one? I think that it's unnecessary complex. > TIA > Sander > If Not IsNull(txtExportDate) Then > 'Check month part > If Mid(txtExportDate, 4, 2) > 12 Then > 'incorrect date! > Else > blnDate = True > End If > 'Check day part > Select Case Left(txtExportDate, 2) > Case 31 > If (Mid(txtExportDate, 4, 2) = 1) Or _ > (Mid(txtExportDate, 4, 2) = 3) Or _ > (Mid(txtExportDate, 4, 2) = 5) Or _ > (Mid(txtExportDate, 4, 2) = 7) Or _ > (Mid(txtExportDate, 4, 2) = 8) Or _ > (Mid(txtExportDate, 4, 2) = 10) Or _ > (Mid(txtExportDate, 4, 2) = 12) Then > 'correct day - month combi > blnDate = True > Else > 'incorrect day-month combi > blnDate = False > End If > Case 30 > If (Mid(txtExportDate, 4, 2) = 4) Or _ > (Mid(txtExportDate, 4, 2) = 6) Or _ > (Mid(txtExportDate, 4, 2) = 9) Or _ > (Mid(txtExportDate, 4, 2) = 11) Then > 'correct day - month combi > blnDate = True > Else > 'incorrect day-month combi > blnDate = False > End If > Case 28 > 'Check if month is february > If Mid(txtExportDate, 4, 2) = 2 Then > 'correct date > blnDate = True > Else > 'incorrectdate > blnDate = False > End If > Case 1 To 27 > 'correct day - month combi > blnDate = True > Case 29 > 'Check if month is february > If Mid(txtExportDate, 4, 2) = 2 Then > 'incorrect date > blnDate = False > Else > 'correctdate > blnDate = True > End If > Case Else > blnDate = False > End Select > Else > 'Null date > Call MsgBox("U heeft geen exporteer datum opgegeven! Deze is verplicht.", _ > vbExclamation, "Onjuiste datum") > txtExportDate.SetFocus > Exit Sub > End If > If Not blnDate Then > Call MsgBox("De datum die u heeft opgegeven is onjuist! " _ > & vbCrLf & "Vul een datum in met formaat: DD-MM-YYYY" _ > & vbCrLf & "" _ > , vbCritical, "Onjuiste datum") > txtExportDate.SetFocus > Exit Sub > Else -- _______________________________________________ AccessD mailing list AccessD at databaseadvisors.com http://databaseadvisors.com/mailman/listinfo/accessd Website: http://www.databaseadvisors.com --------------------------------- Do you Yahoo!? Check out the new Yahoo! Front Page. www.yahoo.com/a