MS Office Excel: Datentypenkonflikt in Kriterienausdruck bei SQL-Anfrage an MS Access

vilbel

Lt. Junior Grade
Registriert
Mai 2014
Beiträge
296
Hallo,

ich bin gerade dabei eine Anwendung basierend auf MS Office Excel und Access zu schreiben, die in der Lage sein soll, einen Kundenbestand zu verwalten. Selbstverständlich gibt es eine Access-Datenbank im Hintergrund mit einer Kundentabelle.

Die Kundentabelle hat folgende Felder:
- Kundennummer (PS)
- Vorname
- Nachname
- Geburtsdatum
- Straße
- PLZ
- Ort

Die Verbindung zur Datenbank wurde bereits erfolgreich über das Objekt DAO.Database hergestellt und es können bereits über ein dafür vorgesehenes Formular Daten persistent gespeichert werden.

Jetzt zum eigentlichen Problem: Es soll auch möglich sein über ein Formular Abfragen an die Kundentabelle innerhalb der MS Access-Datenbank zu stellen. Das Formular ist fertig und funktioniert bis auf eine Kleinigkeit zufriedenstellend. Und zwar erscheint eine Fehlermeldung wenn man eine Abfrage über das Eingabefeld Geburtsdatum starten möchte. Dann erscheint eine Fehlermeldung mit dem Hinweis "Laufzeitfehler 3464 - Datentypenkonflikt in Kriterienausdruck".
Der Sachverhalt ist in den angehängten Bilder gut nachvollziehbar.

Woran könnte das liegen? Die im Hintergrund gestellte SQL-Abfrage an sich ist ja meines Wissens nach korrekt, oder doch nicht?

Ausschnitt aus meinem Code:
Set database = OpenDatabase(strDBFullName)

Select Case True
Case strKundennummer = "" And strVorname = "" And strNachname = "" And strGeburtsdatum = ""
strQuery = "SELECT * FROM Kunden;"

Case strKundennummer = "" And strVorname <> "" And strNachname = "" And strGeburtsdatum = ""
strQuery = "SELECT * FROM Kunden WHERE Vorname = '" & strVorname & "';"

// Weitere Abfragen folgen hier; wurden absichtlich weggelassen


Case strKundennummer = "" And strVorname <> "" And strNachname <> "" And strGeburtsdatum <> ""
strQuery = "SELECT * FROM Kunden WHERE Vorname = '" & strVorname & "' AND Nachname = '" & strNachname & "' AND Geburtsdatum = '" & strGeburtsdatum & "';"

End Select


Mein Verdacht ist, dass es möglicherweise an einer Formatsache des Datums hängen könnte. Muss ich evtl. ein bestimmtes Datumsformat in der Access-DB einstellen, damit die Abfrage funktioniert?

Die MsgBox gibt die jeweils erzeugte SQL-Anweisung innerhalb der Select Case Anweisung aus.


Ausgabe_SQL_String.JPGFormulareingabe.JPGFehlermeldung.JPG
 
Zuletzt bearbeitet: (Ergänzung)
Als welcher Datentyp ist das Datum in Access definiert? So wie es aussieht sendest Du einen String in deiner Anfrage.

Excel und Access errechnen das Datum aus Zahlen. Du könntest einfach diese Zahl in Access ablegen. Das erspart dir die Formatierung.
 
Zuletzt bearbeitet:
Janush schrieb:
Als welcher Datentyp ist das Datum in Access definiert? So wie es aussieht sendest Du einen String in deiner Anfrage.

Das Datum ist im Standarddatumsformat (also z. B. 12.11.2015 17:15:56) angelegt. Kann ich dir Anhieb zeigen, schau dir einfach die Grafik an.Kunden-DB.JPG
 
Naja und in der Abfrage sendest Du einen String. Daher kommt der Fehler. Versuch doch mal das Datum ohne Hochkommas zu senden. Oder du legst es gleich als float ab.
 
Zurück
Oben