Datentypenkonflikt

Hallo, ich habe folgenden VBA Code:

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?

Hallo,

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.

Grüße
Manfred

Hallo Tobias,

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!

Gruß
Marco

Moin,

ich würde vermuten, daß

der Fehler ist.

Was passiert bei

Gruß
Leo

Hallo,

zum einen muss man datumsfelder in # einfassen und zum anderen sollte man in SQL-Statements das Datum in engl. Format ueberfuehren:

… WHERE ((([Tbl_Umsaetze].umsatz_datum)=#" & format(dat_abfrage,„mm-dd-yyyy“) & "#))) …

Tschau
Peter

Hallo Tobias,

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“

Gruß
JOGI

Hallo Tobias
in VBA & SQL muss die englische Datumsform verwendet werden. Am einfachsten geht es mit einer Funktion yur Umwandlung:

Public Function SQLDatum(Datum As Variant) As String

If Not IsNull(Datum) Then
SQLDatum = „#“ & Month(Datum) & „/“ & Day(Datum) & „/“ & Year(Datum) & „#“
Else
SQLDatum = „“
End If

End Function

Du hast die Variable als String definiert - nicht als date: somit liest er diese nur als Zeichenkette aus.

Versuch es mal mit: dim dat_abfrage as date

Wenn das nicht funzt, den ([Tbl_Umsaetze].umsatz_datum)als text definieren nehmen (z.B. left$(([Tbl_Umsaetze].umsatz_datum),10)

Hallo,

Beim Datentyp Datum gilt die Amerikanische Schreiweise also 02/27/2012 ausserdem müssen Datumsangaben zwischen 2 Rauten stehen.
Etwa so #02/27/2012#.

Frank

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!!

Es ginge