Avatar billede bluestrike Nybegynder
01. september 2003 - 15:37 Der er 3 kommentarer

Dato kontrol ved indtastning.

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.
Avatar billede bluestrike Nybegynder
01. september 2003 - 16:00 #1
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.
Avatar billede terry Ekspert
01. september 2003 - 17:54 #2
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.
Avatar billede peikba Nybegynder
03. september 2003 - 13:20 #3
Prøv denne, den kan næsten også punktsvejse :o)

/Peik

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
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester