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.
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.
Zuletzt bearbeitet:
(Ergänzung)