SQL Abfrageprobleme

Hallo, natürlich scheitert er wieder einmal, wer kann mir bei dieser Abfrage weiter helfen?

Ab dem Zeichen '** kommt der Laufzeitfehler 3061:
Zwei Parameter wurden erwartet, aber es wurden zuwenig Parameter übergeben.

Besten Dank für jeden Hinweiss.
Grüsse Sebastian

Tabelle = „TKunden“
Feld1 = „Name“ 'String
Feld2 = „Vorname“ 'String
Feld3 = „Geburtstag“ 'Date
Kriterium1 = Me.comboxName.Value
Kriterium2 = Me.comboxVorname.Value
Kriterium3 = Me.comboxGebDate.Value
Kriterium3 = „#“ & Mid(Kriterium3, 4, 2) & „/“ & Left(Kriterium3, 2) & „/“ & Right(Kriterium3, 4) & „#“ 'Benötigtes Format #31/12/92#

'**
Set rs = CurrentDb.OpenRecordset("SELECT " & Tabelle & ".* " & _
"FROM " & Tabelle & " WHERE " & Tabelle & „.“ & Feld1 & " = " & Kriterium1 & " and " & Tabelle & „.“ & Feld2 & " = " & Kriterium2 & " and " & Tabelle & „.“ & Feld3 & " = " & Kriterium3)

If rs.RecordCount 0 Then
Set rs = CurrentDb.OpenRecordset("SELECT " & Tabelle & ".* " & _
"FROM " & Tabelle & " WHERE " & Tabelle & „.“ & Feld1 & " = " & Kriterium1 & " and " & Tabelle & „.“ & Feld2 & " = " & Kriterium2 & " and " & Tabelle & „.“ & Feld3 & " = " & Kriterium3)
If rs.RecordCount = 0 Then
MsgBox „Noch nicht vorhanden“
Exit Sub
Else
MsgBox „vorhanden“
End If
End If

Mahlzeit,

Hallo, natürlich scheitert er wieder einmal, wer kann mir bei
dieser Abfrage weiter helfen?

auch hier hab ich keine große Lust, mir das genauer anzusehen, aber mir fällt sofort auf:

"FROM " & Tabelle & " WHERE " & Tabelle & „.“ & Feld1 & " = "
& Kriterium1 & " and " & Tabelle & „.“ & Feld2 & " = " &
Kriterium2 & " and " & Tabelle & „.“ & Feld3 & " = " &
Kriterium3)

Die Stringliterale werden in Deinem zusammengesetzten Ausdruck nicht in Hochkommata gesetzt. Bei Eingabe von „Klaus“, „Meier“ und 31.12.1992 ergäbe das:

FROM TKunden WHERE TKunden.Name = Meier
and TKunden.Vorname = Klaus
and TKunden.Geburtstag = #31/12/92#

Da fehlen also die Hochkommata (chr$(34)), einzubauen etwa so:

"FROM " & Tabelle & " WHERE " & Tabelle & „.“ & Feld1 & " = " & chr$(34) & _

Noch ein paar Anmerkungen:

Spar die ganzen „Tabelle“-Ausdrücke. Sie sind nicht notwendig und wirken sich negativ auf die Lesbarkeit aus. Anstatt:

FROM TKunden WHERE TKunden.Name = ‚Meier‘
and TKunden.Vorname = ‚Klaus‘
and TKunden.Geburtstag = ‚#31/12/92#‘

schreibe

FROM TKunden WHERE Name = ‚Meier‘
and Vorname = ‚Klaus‘
and Geburtstag = ‚#31/12/92#‘

Außerdem: eine Tabellenspalte mit dem Spaltennamen ‚Name‘ wird Dir Ärger bereiten, weil das eine Eigenschaft des VBA-Objekts ist. Nenne sie stattdesen FamilienName o.ä.

HTH

Sancho

Hab was vergessen. Wenn Du das so machst:

Set rs = CurrentDb.OpenRecordset("SELECT " & Tabelle & ".* " &
_ …

wirst Du das Problem haben, daß Du dann zwar weißt, daß da ein Problem ist, aber nicht genau wo. Erzeuge statt dessen einen SQL-String:

strSQL = "SELECT " & Tabelle & ".\* " &\_ ...
Set rs = CurrentDb.OpenRecordset(strSQL)

Wenn da was schiefgeht, kannst Du im Direktfenster den String anschauen, was Dir hoffentlich weiterhilft:

? strSQL

Gruß

Sancho

Hallo,
bei dem einen Parameter handelt es sich um ein Datum, das wahrscheinlich auch als solches in der Tabelle vorhanden ist …
Arbeite hier bitte mit dem DATEVALUE(’ … ') - Befehl.
Wie Bei Texten, die in Hochkomma gesetzt werden müssen gibts auch bei Datümern eine Extrawurst …