Access-o-Mania

Access-Forum (Deutsch/German) => Access Programmierung => Thema gestartet von: Beate1953 am November 26, 2013, 14:25:09

Titel: Set rs = CurrentDb.OpenRecordset(SQLstr, dbOpenSnapshot)
Beitrag von: Beate1953 am November 26, 2013, 14:25:09
Hallo,

ich Bekomme immer die Fehlermeldung "Laufzeitfehler 3061: 1 Parameter wurden erwartet, aber es wurden zu wenig Parameter übergeben". Der gelbe Marker steht dann auf der Zeile

Set rs = CurrentDb.OpenRecordset(SQLstr, dbOpenSnapshot)


Der ganze Code lautet:
Dim rs As DAO.Recordset

Set rs = CurrentDb.OpenRecordset(SQLstr, dbOpenSnapshot)
If rs.BOF And rs.EOF Then
   MsgBox "Für den von Ihnen gewählten Zeitraum sind keine Datensätze vorhanden"
End If

rs.Close
Set rs = Nothing


SQLstr ist ein SQL-string, der passt.

Das Seltsame ist, dass genau dieser Code bereits einmal ohne Fehlermeldung funktioniert hat.


Im Voraus vielen Dank für Eure Hilfe
Beate1953
Titel: Re: Set rs = CurrentDb.OpenRecordset(SQLstr, dbOpenSnapshot)
Beitrag von: Leopold Bloom am November 26, 2013, 16:20:25
Hallo Beate,

ich habe Deinen Code mal kopiert C & P und ein einfaches SQL Satement eingesetzt. Keine Fehlermeldung!!! Der Code passt.
Vielleicht solltest Du doch mal deinen SQL String prüfen oder hier zur Begutachtung einstellen.

LG

Leo

Titel: Re: Set rs = CurrentDb.OpenRecordset(SQLstr, dbOpenSnapshot)
Beitrag von: DF6GL am November 26, 2013, 17:37:18
Hallo,

es liegt ja auch nicht am Code, eher am SQL-String... Dort fehlt vermutlich ein Kriterium, bzw. ein entspr. Tabellenfeld, das entweder leer oder unbekannt, weil falsch geschrieben (---> fehlende Eckklammern!!) ist.
Titel: Re: Set rs = CurrentDb.OpenRecordset(SQLstr, dbOpenSnapshot)
Beitrag von: Beate1953 am November 30, 2013, 12:34:47
Hallo,

ihr hattet recht. Es lag am SQLstring selbst. Ich hatte eine runde Klammer zuviel geschlossen. Jetzt klappt es.

Es wundert mich nur, dass Access den Fehler nicht als Syntaxfehler beanstandet hat und dass

Me:RecordSource = SQLstr

den String ohne Beanstandung verwendet hat und auch die richtigen Datensätze gefunden hat.

Viele Grüße und vielen Dank
Beate1953
Titel: Re: Set rs = CurrentDb.OpenRecordset(SQLstr, dbOpenSnapshot)
Beitrag von: DF6GL am November 30, 2013, 16:21:32
Hallo,


VBA-Code (Programm) ist das Eine, SQL-Syntax (Abfrage an die DB-Engine) das Andere.... Beide "wissen" doch nichts voneinander...