Access-o-Mania

Access-Forum (Deutsch/German) => Access Programmierung => Thema gestartet von: joschi50 am Juli 31, 2022, 10:18:02

Titel: Kein aktueller Datensatz in SQL
Beitrag von: joschi50 am Juli 31, 2022, 10:18:02
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 ?
Titel: Re: Kein aktueller Datensatz in SQL
Beitrag von: DF6GL am Juli 31, 2022, 11:20:08
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.
Titel: Re: Kein aktueller Datensatz in SQL
Beitrag von: ebs17 am Juli 31, 2022, 11:35:48
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.
Titel: Re: Kein aktueller Datensatz in SQL
Beitrag von: joschi50 am Juli 31, 2022, 11:51:44
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.
Titel: Re: Kein aktueller Datensatz in SQL
Beitrag von: Beaker s.a. am Juli 31, 2022, 12:13:51
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  ;)
Titel: Re: Kein aktueller Datensatz in SQL
Beitrag von: joschi50 am Juli 31, 2022, 13:26:57
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.

Titel: Re: Kein aktueller Datensatz in SQL
Beitrag von: Beaker s.a. am Juli 31, 2022, 13:40:48
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
Titel: Re: Kein aktueller Datensatz in SQL
Beitrag von: joschi50 am Juli 31, 2022, 14:28:19
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.
Titel: Re: Kein aktueller Datensatz in SQL
Beitrag von: Beaker s.a. am Juli 31, 2022, 14:41:32
Wohl darin, dass "Me" eben nicht "Forms!doubrd1" ist.
Füge mal einDebug.Print Me.Nameam 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.
Titel: Re: Kein aktueller Datensatz in SQL
Beitrag von: joschi50 am Juli 31, 2022, 14:54:42
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.
Titel: Re: Kein aktueller Datensatz in SQL
Beitrag von: Beaker s.a. am Juli 31, 2022, 15:05:44
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.
Titel: Re: Kein aktueller Datensatz in SQL
Beitrag von: DF6GL am Juli 31, 2022, 16:55:11
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..
Titel: Re: Kein aktueller Datensatz in SQL
Beitrag von: joschi50 am Juli 31, 2022, 16:56:57
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.  ?
Titel: Re: Kein aktueller Datensatz in SQL
Beitrag von: Beaker s.a. am August 01, 2022, 12:02:05
Weil SQL das so verlangt. In VBA ist es mehr oder weniger egal; -
Diskussionen dazu gibt es seit 20 Jahren.