Supportnet / Forum / Datenbanken
Datumsformat in SQL ändern
Frage
Hallo,
ich lasse vom Anwender ein Datum abfragen , das er in ein Textfeld schreiben soll(zb 29.07.03).Danach werden alle Datensätze zu diesem Datum aufgelistet.Da die abfrage über SQL läuft funzt das ganze nur wenn mann 07/29/03 eingibt. Wie muss ich meine Anweisung umformulieren,das ich das Datum in das Format tt.mm.jj bekomme?
Option Compare Database
Const Kriterien = 10
Dim fn(1 To Kriterien) As Variant, ft(1 To Kriterien) As Variant
Private Sub Alle_Click()
Dim suchall As String
suchall = "SELECT Tabelle1.* FROM Tabelle1;"
Liste25.RowSource = suchall
Liste25.Requery
Me("LISTE25").Visible = True
End Sub
Private Sub erneut_Click()
Dim i As Integer
Me("Liste25").Visible = False
For i = 1 To Kriterien
Me(fn(i)).ControlSource = ""
Next i
End Sub
Private Sub Form_Load()
fn(1) = "Version": ft(1) = "n"
fn(2) = "Dokument": ft(2) = "n"
fn(3) = "Archivdatum": ft(3) = "d"
fn(4) = "Titel": ft(4) = "a"
fn(5) = "Bemerkung": ft(5) = "a"
fn(6) = "DokumentenNr": ft(6) = "a"
fn(7) = "[Ersetzt durch]": ft(7) = "a"
fn(8) = "[Erstell-Datum]": ft(8) = "d"
fn(9) = "Versio": ft(9) = "a"
fn(10) = "Änderungsdatum": ft(10) = "d"
Dim i As Integer
Me("Liste25").Visible = False
For i = 1 To Kriterien
Me(fn(i)).ControlSource = ""
Next i
Me("Suchen").Enabled = True
Me("Alle").Enabled = True
End Sub
Private Sub info_Click()
MsgBox ("BLABLABLA")
End Sub
Private Sub Suchen_Click()
Dim i As Integer
Me("Alle").Enabled = True
Dim such As String
such = "SELECT Tabelle1.Version,"
such = such + "Tabelle1.Dokument,"
such = such + "Tabelle1.Archivdatum, "
such = such + "Tabelle1.Titel, "
such = such + "Tabelle1.Bemerkung, "
such = such + "Tabelle1.DokumentenNr, "
such = such + "Tabelle1.[Ersetzt durch], "
such = such + "Tabelle1.[Erstell-Datum], "
such = such + "Tabelle1.Versio,"
such = such + "Tabelle1.Änderungsdatum "
such = such + "FROM Tabelle1 "
Dim flag As Integer
Dim inhalt As Variant
Dim k As String
Dim typ As Variant
Dim v As Integer
Dim s As Integer
flag = 0
s = 0
For i = 1 To Kriterien
inhalt = Me(fn(i))
typ = ft(i)
If Not IsNull(inhalt) Then
s = s + 1
If flag = 1 Then k = k + "AND"
k = k + "(Tabelle1." + fn(i)
If InStr(inhalt, ">") Or InStr(inhalt, "<") Or InStr(inhalt, "=") Then
v = 1
If InStr(inhalt, ">=") Or InStr(inhalt, "<=") Or InStr(inhalt, "<>") Then v = 2
Else
v = 0
End If
If typ = "n" Then
If v <> 0 Then
k = k + inhalt
Else
k = k + "=" + inhalt
End If
ElseIf typ = "a" Then
If v <> 0 Then
k = k + Left(inhalt, v) + "'" + Mid(inhalt, v + 1) + "'"
Else
If InStr(inhalt, "*") Or InStr(inhalt, "?") Then
k = k + " LIKE'" + inhalt + "'"
Else
k = k + "='" + inhalt + "'"
End If
End If
ElseIf typ = "d" Then
If v <> 0 Then
k = k + Left(inhalt, v) + "#" + Mid(inhalt, v + 1) + "#"
Else
If InStr(inhalt, "*") Or InStr(inhalt, "?") Then
k = k + " LIKE'" + inhalt + "'"
Else
k = k + "=#" + inhalt + "#"
End If
End If
End If
k = k + ")"
flag = 1
End If
Next i
If s = 0 Then
MsgBox ("Sie haben keine Suchkriterien eingegeben! Es werden alle Datensätze aufgelistet!")
End If
If flag Then
such = such + "WHERE"
such = such + "(" + k + ");"
End If
Me.Liste25.RowSource = such
Me.Liste25.Requery
Me("Liste25").Visible = True
End Sub
Antwort 1 von JohnnyLoser
Zitat:
Wie muss ich meine Anweisung umformulieren,das ich das Datum in das Format tt.mm.jj bekomme?
Wie muss ich meine Anweisung umformulieren,das ich das Datum in das Format tt.mm.jj bekomme?
Du mußt Dein Datum nicht in das Format tt.mm.jj bekommen, sondern in das Format mm/dd/yyyy.
Schreibe Dir in Dein CommonFunction-Modul eine Funktion, der Du Dein Datum übergibst:
Public Function SQLDate (xDate) As String
SQLDate = "#" & Format(CvDate(xDate),"mm\/dd\/yyyy") & "#"
End Function
'''Aufruf
SQLDate(Me.Datumsfeld)Du solltest natürlich abchecken, ob Du ein gültiges Datum übergibst.
Gruß
Johnny
Antwort 2 von CLU
Super funktioniert einwandfrei. Danke

