Laufzeitfehler 3464 bei Abfrage in Access

Hallo Gemeinde,

ich führe in VBA zwei Abfragen aus:

Dim db_pw_code As DAO.Database
Dim dy_pw_code As DAO.Recordset
Set db_pw_code = CurrentDb

Dim db_anmeldung As DAO.Database
Dim dy_anmeldung As DAO.Recordset
Set db_anmeldung = CurrentDb
Set dy_anmeldung = db_anmeldung.OpenRecordset(„Select * From [Benutzer] Where [Kennung]= '“ & qnummer & „’“)
If IsNull(dy_anmeldung!Vorname) Then GoTo keinZugang
var_Ident = dy_anmeldung!Ident
Set dy_pw_code = db_pw_code.OpenRecordset(„Select * From [Code] Where ([Ident]= '“ & var_Ident & „’)“)

Bei Ausführung der „Set dy_pw_code =…“

Bekomme ich den Fehler

Laufzeitfehler 3464

Datentypen in Kriterienausdruck unverträglich

angezeigt.

mit „Like“ anstelle von „=“ klappt es.

Kann mir jemand sagen warum? Besonders warum klappt es bei der ersten Abfrage und nicht bei der zweiten.

Veilen Dank schon mal.

Lothar

Moin, Lothar,

Where ([Ident]= ‚" & var_Ident & "‘)")

stimmen die Datentypen von Ident und var_Ident überein?

Gruß Ralf

Hallo Gemeinde,

ich führe in VBA zwei Abfragen aus:

Dim db_pw_code As DAO.Database
Dim dy_pw_code As DAO.Recordset
Set db_pw_code = CurrentDb

Dim db_anmeldung As DAO.Database
Dim dy_anmeldung As DAO.Recordset
Set db_anmeldung = CurrentDb
Set dy_anmeldung = db_anmeldung.OpenRecordset(„Select * From
[Benutzer] Where [Kennung]= '“ & qnummer & „’“)
If IsNull(dy_anmeldung!Vorname) Then GoTo keinZugang
var_Ident = dy_anmeldung!Ident
Set dy_pw_code = db_pw_code.OpenRecordset("Select * From

[Code] Where ([Ident]= ‚" & var_Ident & "‘)")

Bei Ausführung der „Set dy_pw_code =…“

Bekomme ich den Fehler

Laufzeitfehler 3464

Datentypen in Kriterienausdruck unverträglich

angezeigt.

mit „Like“ anstelle von „=“ klappt es.

Kann mir jemand sagen warum? Besonders warum klappt es bei der
ersten Abfrage und nicht bei der zweiten.

Hallo,

vermutlich ist [Ident] in der Tabelle vom Datentyp Zahl,Long.

Demzufolge sollte es so heißen:

…Where ([Ident]= " & var_Ident & ") …

Würde empfehlen, auch Variablen passend zu deklarieren (sieht man an dem Code-Schnippsel nicht) und nur in Ausnahmefällen als Datentyp Variant

Gruß
Franz, DF6GL

Veilen Dank schon mal.

Lothar

Moin, Lothar,

Where ([Ident]= ‚" & var_Ident & "‘)")

stimmen die Datentypen von Ident und var_Ident überein?

Gruß Ralf

[Ident] ist Datentyp Long Integer
Ich habe var_Ident schon als Long, Double, und Variant deklariert aber jedesmal mit demselben Ergebnis. Inzwischen habe ich herausgefunden, dass „=“ Grundsätzlich mit den Datentypen Memo und Text funktuioniert, nicht jedoch mit Datums oder Zahlentypen.

Wirklich weitergekommen bin ich damit aber nicht.

Wenn die Like Anweisung nicht soviel langsamer wäre (ich führe ca. 30 Abfragen aus) hätte ich damit auch kein Problem.

Mal sehen, vielleicht findet sich ja noch eine Lösung.

Lothar

Wirklich weitergekommen bin ich damit aber nicht.

Wenn die Like Anweisung nicht soviel langsamer wäre (ich führe
ca. 30 Abfragen aus) hätte ich damit auch kein Problem.

Like auf Zahl-Datentypen anzuwenden, ist fehl am Platz

Mal sehen, vielleicht findet sich ja noch eine Lösung.

Die Lösung hat sich schon um 11:59 gefunden :wink:

Gruß
Franz

Lothar