Ich verzweifel noch an der Syntax.
Versuche ein Recordset mit 2 Verweisen auf Formularfelder per sql zu öffnen.
Ich erhalte jedoch die Meldung "Kein Datensatz".
Dim RS4 As DAO.Recordset
Set RS4 = CurrentDb.OpenRecordset("SELECT * from Spielerliste WHERE ([Spielername]='Forms![doubrd1]![spieler1]') AND ([Turniername]='Forms![doubrd1]![tdoubname]');")
RS4.Edit
Danach soll das Recordset mit verschiedenen Werten aus dem geöffneten Fenster aktualisiert werden.
Wo ist mein Fehler ?
Hallo,
etwa so:
Set RS4 = CurrentDb.OpenRecordset("SELECT * from Spielerliste WHERE Spielername= '" & Me!spieler1 & "' AND Turniername= '" & Me!tdoubname & "'", dbOpenDynaset)
Das Filtern mit Hilfe von Namen ist fehlerträchtig. Besser ist die Verwendung der Schlüsselfelder.
ZitatWo ist mein Fehler ?
[Spielername]='Forms![doubrd1]![spieler1]'
Der Inhalt zwischen den Hochkommata ist als String gekennzeichnet und wird auch so ausgewertet, also als Zeichenfolge, nicht etwa als ein Objekt mit einem auszuwertenden Inhalt.
Ziemlich sicher heißt dann kein Spieler so wie geschrieben.
Jetzt erhalte ich den Fehler "Methode oder Datenobjekt" nicht gefunden.
Und zwar bei der Zeile
RS4.gewonnen1 = Forms!doubrd1!s1
Dim RS4 As DAO.Recordset
Set RS4 = CurrentDb.OpenRecordset("SELECT * from Spielerliste WHERE Spielername= '" & Me!Spieler1 & "' AND Turniername= '" & Me!Tdoubname & "'", dbOpenDynaset)
RS4.Edit
If Forms!doubrd1!spr1 = 1 Then
RS4.gewonnen1 = Forms!doubrd1!s1
Werd noch verrückt.
Hallo Joschi,
Liest du eigentlich was die Helfer dir schreiben?
ZitatSet RS4 = CurrentDb.OpenRecordset("SELECT * from Spielerliste WHERE Spielername= '" & Me!spieler1 & "' AND Turniername= '" & Me!tdoubname & "'", dbOpenDynaset)
und
ZitatDas Filtern mit Hilfe von Namen ist fehlerträchtig. Besser ist die Verwendung der Schlüsselfelder.
ZitatZiemlich sicher heißt dann kein Spieler so wie geschrieben.
gruss ekkehard
ZitatWerd noch verrückt.
Warum nicht? Ford Prefekt hat damit gute Erfahrungen gemacht ;)
Hi,
natürlich habe ich die Antworten gelesen. Habe es jetzt mit und ohne Hochkomma probiert, die Fehlermeldung bleibt.
Ich hatte die Recordset Anweisung direkt von DF6GL übernommen, funktioniert leider nicht.
Eine entsprechende Abfrage im Abfrageeditor bringt das gewünschte Ergebnis.
Es wird aber die Methode bzw. das Objekt nicht gefunden.
Das mit dem Namen ist mir schon klar, kann ich aber jetzt im Moment nicht ändern.
ZitatIch hatte die Recordset Anweisung direkt von DF6GL übernommen, funktioniert leider nicht.
Dann können eigentlich nur die Feldnamen oder der ganze Formularbezug
nicht stimmen (Tippfehler?).
ZitatEine entsprechende Abfrage im Abfrageeditor bringt das gewünschte Ergebnis.
Was heisst "entsprechend"?
Franz' Abfrage dürfte, 1:1 in den Abfrageeditor (SQL-Ansicht) kopiert, genau diese
Fehlermeldung
ZitatEs wird aber die Methode bzw. das Objekt nicht gefunden.
ausgeben, weil der SQL-Interpreter mit "Me!" nichts anfangen kann.
Überprüfe auch mal, ob "Me" überhaupt das Formular ist von dem die Werte
abgeholt werden.
gruss ekkehard
Mit dieser Abfrage im Abfrageeditor erhalte ich exakt das gewünschte Ergebnis
SELECT * from Spielerliste WHERE Spielername= Formulare!doubrd1!Spieler1 AND Turniername= Forms!doubrd1!Tdoubname
Ich wüsste jetzt nicht wo beim Öffnen des Recordsets noch der Fehler ist.
Wohl darin, dass "Me" eben nicht "Forms!doubrd1" ist.
Füge mal einDebug.Print Me.Name
am Anfang der
Prozedur ein bzw. überprüfe den ganzen String
Debug.Print "SELECT * from Spielerliste WHERE Spielername= '" & Me!Spieler1 & "' AND Turniername= '" & Me!Tdoubname & "'"
I.Ü. spricht SQL englisch, also immer "Forms!" verwenden.
Ich habe jetz mal nur folgende SQL eingegeben
Set RS4 = CurrentDb.OpenRecordset("SELECT * from Spielerliste", dbOpenDynaset)
Selbst dann erhalte ich die Fehlermeldung
Dann muss der Fehler doch woanders sitzen
Dim RS4 As DAO.Recordset
Set RS4 = CurrentDb.OpenRecordset("SELECT * from Spielerliste", dbOpenDynaset)
RS4.Edit
If Forms!doubrd1!spr1 = 1 Then
RS4.gewonnen1 = Forms!doubrd1!s1
RS4.punkte1 = Forms!doubrd1!p1
RS4.score1 = Forms!doubrd1!sc1
End If
Der Name für die Tabelle "Spielerliste" stimmt und das Formular doubrd1 ist geöffnet. Von dort erfolgt ja der Klick auf einen Button der das SUB ausführt.
Tja, da fällt mir erstmal auch nichts mehr zu ein.
Ist da vielleicht ein UFo involviert?
Manchmal hilft bei solchen Sachen ein "reparieren/komprimieren" und
evtl. Access/Rechner neu starten.
Hallo,
oder lade mal die DB hier hoch, komprimiert/repariert und gezippt.
Wobei
ZitatIch erhalte jedoch die Meldung "Kein Datensatz".
eigentlich keine
Fehlermeldung ist, lediglich ein Hinweis darauf, dass kein editierbarer DS gefunden wurde.
Soll heißen, es gibt keinen DS, bei dem die Kriterien zutreffen..
Problem gelöst
Statt Punkt ein Ausrufezeichen...
Dim db As DAO.Database
Set db = CurrentDb
Dim RS4 As DAO.Recordset
Set RS4 = db.OpenRecordset("SELECT * from Spielerliste WHERE Spielername= '" & Forms!doubrd1!Spieler1 & "' AND Turniername= '" & Forms!doubrd1!Tdoubname & "'", dbOpenDynaset)
RS4.Edit
If Forms!doubrd1!spr1 = 1 Then
RS4!gewonnen1 = Forms!doubrd1!s1
RS4!punkte1 = Forms!doubrd1!p1
RS4!score1 = Forms!doubrd1!sc1
Aber warum muss ich RS4! schreiben und nicht RS4. ?
Weil SQL das so verlangt. In VBA ist es mehr oder weniger egal; -
Diskussionen dazu gibt es seit 20 Jahren.