Ok ist nicht lesbar. Hier nochmal das
Original (und ausnahmsweise HTML).
Wenn Du den Weg gehen m�chtest, dann kannst Du ja
mal das angeh�ngte Script ausprobieren.
SCHRITT 1: pack das Ganze in eine TEST.VBS Datei und lass es laufen. Schau, ob Dir die Funktionalit�t so passt. Ggf. anpassen.
SCHRITT 2: passt alles, dann die drei Funktionen in Dein ASP packen. Die Testaufrufe mit msgbox weglassen. Nicht vergessen am Ende der Funktion ToDate die Kommentare f�r den passenden Block (Access oder SQL-Server) richtig setzen.
Aufruf w�re dann etwa so
sqldatum = ToDate(request("formdatum"))
Und die Variable sqldatum in den Abfragestring oder Update/Insert-String einsetzen.
SCHRITT 1: pack das Ganze in eine TEST.VBS Datei und lass es laufen. Schau, ob Dir die Funktionalit�t so passt. Ggf. anpassen.
SCHRITT 2: passt alles, dann die drei Funktionen in Dein ASP packen. Die Testaufrufe mit msgbox weglassen. Nicht vergessen am Ende der Funktion ToDate die Kommentare f�r den passenden Block (Access oder SQL-Server) richtig setzen.
Aufruf w�re dann etwa so
sqldatum = ToDate(request("formdatum"))
Und die Variable sqldatum in den Abfragestring oder Update/Insert-String einsetzen.
Option Explicit
dim a
dim a
a = "2.3.2000"
msgbox a & vbcrlf & vbcrlf & ToDate(a)
a = "22.3.2000"
msgbox a & vbcrlf & vbcrlf & ToDate(a)
a = "2.33.2000"
msgbox a & vbcrlf & vbcrlf & ToDate(a)
a = "2, 3 .2000"
msgbox a & vbcrlf & vbcrlf & ToDate(a)
a = "13. 13. 2000"
msgbox a & vbcrlf & vbcrlf & ToDate(a)
a = "13. 1"
msgbox a & vbcrlf & vbcrlf & ToDate(a)
a = "13. April"
msgbox a & vbcrlf & vbcrlf & ToDate(a)
a = "34 Dezemper"
msgbox a & vbcrlf & vbcrlf & ToDate(a)
a = "33/"
msgbox a & vbcrlf & vbcrlf & ToDate(a)
a = "4"
msgbox a & vbcrlf & vbcrlf & ToDate(a)
a = "3. Idiot"
msgbox a & vbcrlf & vbcrlf & ToDate(a)
a = "Letzder"
msgbox a & vbcrlf & vbcrlf & ToDate(a)
a = " Morgen"
msgbox a & vbcrlf & vbcrlf & ToDate(a)
a = "geSCHDern "
msgbox a & vbcrlf & vbcrlf & ToDate(a)
a = "�bermogen"
msgbox a & vbcrlf & vbcrlf & ToDate(a)
a = "Moin"
msgbox a & vbcrlf & vbcrlf & ToDate(a)
a = "Hoppala"
msgbox a & vbcrlf & vbcrlf & ToDate(a)
msgbox a & vbcrlf & vbcrlf & ToDate(a)
a = "22.3.2000"
msgbox a & vbcrlf & vbcrlf & ToDate(a)
a = "2.33.2000"
msgbox a & vbcrlf & vbcrlf & ToDate(a)
a = "2, 3 .2000"
msgbox a & vbcrlf & vbcrlf & ToDate(a)
a = "13. 13. 2000"
msgbox a & vbcrlf & vbcrlf & ToDate(a)
a = "13. 1"
msgbox a & vbcrlf & vbcrlf & ToDate(a)
a = "13. April"
msgbox a & vbcrlf & vbcrlf & ToDate(a)
a = "34 Dezemper"
msgbox a & vbcrlf & vbcrlf & ToDate(a)
a = "33/"
msgbox a & vbcrlf & vbcrlf & ToDate(a)
a = "4"
msgbox a & vbcrlf & vbcrlf & ToDate(a)
a = "3. Idiot"
msgbox a & vbcrlf & vbcrlf & ToDate(a)
a = "Letzder"
msgbox a & vbcrlf & vbcrlf & ToDate(a)
a = " Morgen"
msgbox a & vbcrlf & vbcrlf & ToDate(a)
a = "geSCHDern "
msgbox a & vbcrlf & vbcrlf & ToDate(a)
a = "�bermogen"
msgbox a & vbcrlf & vbcrlf & ToDate(a)
a = "Moin"
msgbox a & vbcrlf & vbcrlf & ToDate(a)
a = "Hoppala"
msgbox a & vbcrlf & vbcrlf & ToDate(a)
Function ToDate(sString)
Dim i, a, sTemp, sTag, sMonat, sJahr
' -- alle m�glichen Trennzeichen raus
sString = replace(replace(replace(replace(replace(sString, ".", " "), "/", " "), ",", " "), " ", " ")," ", " ")
' -- Defaults vorbelegen
sJahr = Year(Now)
sMonat = Month(Now)
sTag = Day(Now)
' -- jetzt Datum ermitteln
Select Case Left(Lcase(Trim(sString)), 3)
Case "heu", "jet" ' -- heute
' nix machen, ist schon passend vorbelegt
Case "mor", "moi" ' -- morgen
sTemp = Now + 1
sJahr = Year(sTemp)
sMonat = Month(sTemp)
sTag = Day(sTemp)
Case "ges" ' -- gestern
sTemp = Now - 1
sJahr = Year(sTemp)
sMonat = Month(sTemp)
sTag = Day(sTemp)
Case "�be" ' -- �bermorgen
sTemp = Now + 2
sJahr = Year(sTemp)
sMonat = Month(sTemp)
sTag = Day(sTemp)
Case "ers" ' -- Monatserster
sTemp = DateSerial(Year(Now), Month(Now), 1)
sJahr = Year(sTemp)
sMonat = Month(sTemp)
sTag = Day(sTemp)
Case "let" ' -- Monatsletzter
sTemp = DateSerial(Year(Now), Month(Now) + 1, 1) - 1
sJahr = Year(sTemp)
sMonat = Month(sTemp)
sTag = Day(sTemp)
Case Else ' -- der Normalfall
a = split(sString, " ")
For i = 0 to UBound(a)
Select Case i
Case 0
sTag = Val(a(i))
if sTag = 0 Then sTag = Day(Now)
Case 1
sMonat = Val(a(i))
If sMonat = 0 Then sMonat = GetMonat(a(i))
Case 2
sJahr = Val(a(i))
If sJahr = 0 Then sJahr = Year(Now)
End Select
Next
End Select
Dim i, a, sTemp, sTag, sMonat, sJahr
' -- alle m�glichen Trennzeichen raus
sString = replace(replace(replace(replace(replace(sString, ".", " "), "/", " "), ",", " "), " ", " ")," ", " ")
' -- Defaults vorbelegen
sJahr = Year(Now)
sMonat = Month(Now)
sTag = Day(Now)
' -- jetzt Datum ermitteln
Select Case Left(Lcase(Trim(sString)), 3)
Case "heu", "jet" ' -- heute
' nix machen, ist schon passend vorbelegt
Case "mor", "moi" ' -- morgen
sTemp = Now + 1
sJahr = Year(sTemp)
sMonat = Month(sTemp)
sTag = Day(sTemp)
Case "ges" ' -- gestern
sTemp = Now - 1
sJahr = Year(sTemp)
sMonat = Month(sTemp)
sTag = Day(sTemp)
Case "�be" ' -- �bermorgen
sTemp = Now + 2
sJahr = Year(sTemp)
sMonat = Month(sTemp)
sTag = Day(sTemp)
Case "ers" ' -- Monatserster
sTemp = DateSerial(Year(Now), Month(Now), 1)
sJahr = Year(sTemp)
sMonat = Month(sTemp)
sTag = Day(sTemp)
Case "let" ' -- Monatsletzter
sTemp = DateSerial(Year(Now), Month(Now) + 1, 1) - 1
sJahr = Year(sTemp)
sMonat = Month(sTemp)
sTag = Day(sTemp)
Case Else ' -- der Normalfall
a = split(sString, " ")
For i = 0 to UBound(a)
Select Case i
Case 0
sTag = Val(a(i))
if sTag = 0 Then sTag = Day(Now)
Case 1
sMonat = Val(a(i))
If sMonat = 0 Then sMonat = GetMonat(a(i))
Case 2
sJahr = Val(a(i))
If sJahr = 0 Then sJahr = Year(Now)
End Select
Next
End Select
' -- Variante A ein VBS Datum
ToDate = DateSerial(sJahr, sMonat, sTag)
ToDate = DateSerial(sJahr, sMonat, sTag)
' -- Variante B ein Access (oder
auch Excel, etc.) Datum generieren
' sTemp = DateSerial(sJahr, sMonat, sTag)
' ToDate = "DateSerial(" & Year(sTemp) & ", " & Month(sTemp) & ", " & Day(sTemp) & ")"
' -- Variante C ein SQL-Server Datum bauen
' sTemp = DateSerial(sJahr, sMonat, sTag)
' ToDate = "Convert(datetime, '" & Day(sTemp) & "." & Month(sTemp) & "." & Year(sTemp) & "', 104)"
End Function
' sTemp = DateSerial(sJahr, sMonat, sTag)
' ToDate = "DateSerial(" & Year(sTemp) & ", " & Month(sTemp) & ", " & Day(sTemp) & ")"
' -- Variante C ein SQL-Server Datum bauen
' sTemp = DateSerial(sJahr, sMonat, sTag)
' ToDate = "Convert(datetime, '" & Day(sTemp) & "." & Month(sTemp) & "." & Year(sTemp) & "', 104)"
End Function
'
' --- String Funktionen
'
Function Val(sString)
Dim i, a, sTemp
If IsNumeric(sString) Then
Val = CInt(sString)
Else
sTemp = "0"
For i = 1 to Len(sString)
a = mid(sString, i, 1)
If IsNumeric(a) Then sTemp = sTemp & a
Next
Val = CInt(sTemp)
End If
End Function
Function GetMonat(sString)
Select Case Left(Lcase(trim(sString)), 3)
Case "jan"
GetMonat = 1
Case "feb"
GetMonat = 2
Case "m�r", "mar"
GetMonat = 3
Case "apr"
GetMonat = 4
Case "mai", "may"
GetMonat = 5
Case "jun"
GetMonat = 6
Case "jul"
GetMonat = 7
Case "aug"
GetMonat = 8
Case "sep"
GetMonat = 9
Case "okt", "oct"
GetMonat = 10
Case "nov"
GetMonat = 11
Case "dez", "dec"
GetMonat = 12
Case Else
GetMonat = Month(now)
End Select
End Function
Select Case Left(Lcase(trim(sString)), 3)
Case "jan"
GetMonat = 1
Case "feb"
GetMonat = 2
Case "m�r", "mar"
GetMonat = 3
Case "apr"
GetMonat = 4
Case "mai", "may"
GetMonat = 5
Case "jun"
GetMonat = 6
Case "jul"
GetMonat = 7
Case "aug"
GetMonat = 8
Case "sep"
GetMonat = 9
Case "okt", "oct"
GetMonat = 10
Case "nov"
GetMonat = 11
Case "dez", "dec"
GetMonat = 12
Case Else
GetMonat = Month(now)
End Select
End Function
--
Viele Gr��e
Hubert Daubmeier
