Jeg har en application som skal hente nogle informationer i et dato tidsrum fra nogle databaser, men mit problem er, hvordan kontrollere jeg nemmest at brugeren har indtastet datoerne på en gyldig form, jeg skal have en form der hedder dd-mm-åååå. På forhånd tak.
Faktisk skal det fungere sådan, at når brugeren har indtastet datoen på formen dd-mm-åååå, så skal den valideres, og så skal den ændres til formen åååå-mm-dd, da det er den form der skal bruges når jeg skal foretage et database kald.
dates are always a problem! What you can do is use the cdate function to see if you can convert what ever the user entered into a date.
CDate Function Example This example uses the CDate function to convert a string to a Date. In general, hard-coding dates and times as strings (as shown in this example) is not recommended. Use date literals and time literals, such as #2/12/1969# and #4:45:23 PM#, instead.
Dim MyDate, MyShortDate, MyTime, MyShortTime MyDate = "February 12, 1969" ' Define date. MyShortDate = CDate(MyDate) ' Convert to Date data type.
MyTime = "4:35:47 PM" ' Define time. MyShortTime = CDate(MyTime) ' Convert to Date data type.
You should consider using the date time picker control instead.
Private Function ValiderDato(ByVal IndDato As Variant) As Date Dim Dag As String Dim Md As String Dim Aar As String
If Len(IndDato) = 0 Then Exit Function
If IndDato = "d" Or IndDato = "D" Then ValiderDato = Date Exit Function End If
If InStr(1, IndDato, ".") <> 0 Then IndDato = RydTegn(IndDato, ".") If InStr(1, IndDato, "/") <> 0 Then IndDato = RydTegn(IndDato, "/") If InStr(1, IndDato, "-") <> 0 Then IndDato = RydTegn(IndDato, "-") If InStr(1, IndDato, ":") <> 0 Then IndDato = RydTegn(IndDato, ":")
Select Case Len(IndDato) Case Is <= 2 Dag = Mid(IndDato, 1, Len(IndDato)) Md = Mid(Date, 4, 2) Aar = Mid(Date, 7, 4) Case Is <= 4 Dag = Mid(IndDato, 1, 2) Md = Mid(IndDato, 3, Len(IndDato) - 2) Aar = Mid(Date, 7, 4) Case Is <= 8 Dag = Mid(IndDato, 1, 2) Md = Mid(IndDato, 3, 2) Aar = Mid(IndDato, 5, Len(IndDato) - 4) End Select
If Val(Dag) > 31 Then GoTo fejl If Val(Md) > 12 Then GoTo fejl If Val(Dag) = 0 Or Val(Md) = 0 Or Val(Aar) = 0 Then GoTo fejl
Select Case Val(Md) Case 2 If (Val(Aar) / 4) = Round(Val(Aar) / 4) Then If Val(Dag) > 29 Then GoTo fejl Else If Val(Dag) > 28 Then GoTo fejl End If Case 4, 6, 9, 11 If Val(Dag) > 30 Then GoTo fejl End Select
ValiderDato = Dag & "-" & Md & "-" & Aar Exit Function
fejl: MsgBox ("Der kan bruges følgende datoformater: " & Chr$(13) & Chr$(10) & _ " 010101 som 01-01-2001 " & Chr$(13) & Chr$(10) & _ " 01012001 som 01-01-2001" & Chr$(13) & Chr$(10) & _ " 01 som den 1. i denne måned" & Chr$(13) & Chr$(10) & _ " 0101 som den 1. januar i år" & Chr$(13) & Chr$(10) & _ " d for i dag" & Chr$(13) & Chr$(10)) End Function
Private Function RydTegn(ByVal indStreng As String, ByVal indTegn As String) As String Dim Taeller As Integer RydTegn = "" If Len(indStreng) < 1 Then Exit Function End If Taeller = 0 While Taeller <= Len(indStreng) Taeller = Taeller + 1 If Mid(indStreng, Taeller, 1) <> indTegn Then RydTegn = RydTegn & Mid(indStreng, Taeller, 1) End If Wend End Function
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.