Private Sub Form_Open(Cancel As Integer)
Dim dat_abfrage As String
dat_abfrage = InputBox(„Welches Umsatzdatum möchten Sie eingeben?“, „Umsatzdatum“, Date - 1) 'Eingabe des Datums als 02.02.2012
Me.Form.RecordSource = „SELECT Tbl_Filialen.Filial_name, u.*“ & _
" FROM Tbl_Filialen LEFT JOIN (SELECT Tbl_Umsaetze.* FROM Tbl_Umsaetze WHERE ((([Tbl_Umsaetze].umsatz_datum)=’" & dat_abfrage & „’))) AS u ON Tbl_Filialen.KoST = u.Umsatz_kost“ & _
" ORDER BY Tbl_Filialen.KoSt;"
End Sub
leider bekomme ich beim ausführen immer die Fehlermeldung „Datentypenkonflikt in Kriterienausdruck“
Da es sich sehr wahrscheinlich um die Datumsvariable handelt, habe ich schon viel gesucht aber nichts passendes gefunden.
In der Tabelle ist das Datum im Format Datum, kurz also 27.02.2012 hinterlegt. genauso gebe ich es doch auch in die Textbox ein. Wieso also der Fehler?
in der Tat. Daran liegt es!
Es ist aber nicht damit getan, dass du das Datum genauso in ein Feld einträgst. Dieses Feld muss vom Typ Datum sein! Oder du musst den Boxhinhalt erst in ein Datum konvertieren.
Deine SQL Abfrage kann nicht funktionieren, du willst in SQL eine Variable String übergeben
WHERE ((([Tbl_Umsaetze].umsatz_datum)=’" &
dat_abfrage & "’)))
Die Hochkommas sind nur für den Typ String
Ersetze die Hochkommas durch # und dann kann es erst funktionieren
Allerdings musst du vorher noch dein Datum umformatieren!
In SQL muss das Datum amerikanisches Format haben!
ich kann an der Datumseingabe auch nichts aussetzen. Der Abfrageaufbau ist für mich ungewöhnlich. Bei mir würde der Aufbau der Abfrage folgendermaßen aussehen:
"SELECT Tbl_Filialen.Filial_name, u.* " & _
"FROM Tbl_Filialen " & _
„LEFT JOIN Tbl_Umsaetze as u ON Tbl_Filialen.KoST = u.Umsatz_kost " & _
WHERE Tbl_Umsaetze.umsatz_datum=’“ & dat_abfrage & "’ " & _
„ORDER BY Tbl_Filialen.KoSt“
Hallo!
Mit Datum habe ich auch immer meine Schwierigkeiten. am Besten das eingegebene Datum als textstring behandeln und dann explizit umwandeln
wolfram
Bei mir funktioniert das mit der Datumsauswahl in VBA so:
Private Sub Form_Load()
Me.Form.RecordSource = „SELECT Tabelle1.* FROM Tabelle1 WHERE (((Tabelle1.Datum)=[Welches Umsatzdatum möchten Sie eingeben?]));“
End Sub
Leichter wäre es eine entsprechende Abfrage zu erstellen und diese als Recordsource dem Formular zu hinterlegen!!