Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!

Mobiles Hauptmenü

docmd.openform bringt Fehlermeldung: Syntaxfehler (fehlender Operator)

Begonnen von ibins, März 25, 2016, 18:20:31

⏪ vorheriges - nächstes ⏩

ibins

Liebe Profis!
Aus einer Liste (lstMusikanten) möchte ich das Stammdatenformular (frmRegisterkarte) durch Doppelklick öffnen und im Stammdatenformular den entsprechenden Datensatz anzeigen lassen.
Private Sub lstMusikanten_DblClick(Cancel As Integer)

DoCmd.OpenForm "frmRegisterkarte"
Forms!frmRegisterkarte.Recordset.FindFirst "mus_id=" & Me!lstMusikanten


End Sub


Die Fehlermeldung bekomme ich auf die 2. Zeile. Ohne dieser funktioniert das öffnen des Formulars problemlos.

Verwunderlich ist für mich, dass ich aus dem gleichen Formular aus einer anderen Liste (lstMusikprobe) ebenfalls ein anderes Formular mit entsprechnendem Datensatz per Doppelklick öffnen kann. Da funktioniert alles einwandfrei! Beide "Zielformulare" sind gebundene Formulare und haben ein Feld mit der entsprechenden ID.
Private Sub lstMusikprobe_DblClick(Cancel As Integer)

DoCmd.OpenForm "frmNeueMusikprobe"
Forms!frmNeueMusikprobe.Recordset.FindFirst "mp_id=" & Me!lstMusikprobe

End Sub


Wo liegt der Fehler?

Freue mich auf eure Hilfe!!!

MzKlMu

Gruß Klaus

ibins

Hallo MzKiMu!
"Mus_id" ist eine Zahl und der Primäschlüssel der tblMusikanten.

DF6GL

Hallo,

warum öffnest Du das Form (bzw. die Formulare) nicht mit Übergabe der Where-Condition bei der Openform-Methode?

Private Sub lstMusikanten_DblClick(Cancel As Integer)
DoCmd.OpenForm "frmRegisterkarte",,,"mus_id=" & Me!lstMusikanten.Column(0)
End Sub


sofern der ID-Wert in Spalte 0 des Listenfeldes steht und es nicht im Mehrfachauswahl-Modus ist.....
Viele Grüße vom Bodensee
Franz, DF6GL

Hilfestellung:  http://www.access-o-mania.de/forum/index.php?topic=6969.msg118738#msg118738

Links und Tipps:
1.   http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/
1a. http://www.tinohempel.de/info/info/datenbank/normalisierung.htm
1b. https://support.office.com/de-de/article/Grundlagen-des-Datenbankentwurfs-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5#bmterms
2.   http://www.donkarl.com
3.   https://web.archive.org/web/20201201233522/http://www.dbwiki.net/
4.   http://www.access-tutorial.de/
5.   http://www.tty1.net/smart-questions_de.htm
6.   http://access.joposol.com/accept

Last but not least:   < F1 > für Hilfe
;) Learning by doing not by spoon-feed ;)

Tipp: Find and Replace for Access

Beaker s.a.

Hallo Franz,
Zitatwarum öffnest Du das Form (bzw. die Formulare) nicht mit Übergabe der Where-Condition bei der Openform-Methode?
Vielleicht will er die Möglichkeit des Blätterns bewahren?
gruss ekkehard
Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)

ibins

Hab´s grad ausprobiert. Funktionieren würde es, aber das mit dem blättern ist wirklich blöd. Auf die erste Art und Weise wäre es mir lieber.

Kann es daran liegen, dass bei lstMusikanten eine Mehrfachauswahl möglich ist? Das ist eigentlich der einizige Unterschied zwischen den beiden Feldern. Aber das wäre wieder unlogisch, denn den Klick gibts ja doch nur auf einen Datensatz. Bin echt ratlos.

ibins

So funktioniert´s:

DoCmd.OpenForm "frmRegisterkarte"
Forms!frmRegisterkarte.Recordset.FindFirst "mus_id=" & Me!lstMusikanten.Column(0)


Warum auch immer....  :D

MzKlMu

Hallo,
ZitatWarum auch immer....
weil Du eine falsche gebundene Spalte hast.
Gruß Klaus

ibins

Das ist aber auch für den Anfang ein bisschen viel...    ;)

Das Aufrufen des Formulars funktioniert perfekt. Allerdings ist in dem Formular auch ein Listenfeld. Der Cursor (?) des Listenfeldes springt natürlich nicht von alleine auf den ausgewählten Datensatz. Gibt es dazu auch noch einen Tip?

Hatte mal einen FindFirst Befehl drin, aber mir ist lieber, kein Datensatz wird schwarz hinterlegt, als der falsche.

MaggieMay

Hallo,
Zitat von: ibins am März 25, 2016, 20:58:32Kann es daran liegen, dass bei lstMusikanten eine Mehrfachauswahl möglich ist?
ja, das macht durchaus einen Unterschied. Schau dir doch einfach mal die diesbezüglichen Artikel in der Access-Hilfe an. Der Einstieg über F1 nach Markierung der Listenfeldeigenschaft "Mehrfachauswahl" könnte dich in die richtige Richtung führen. Dann einfach alles lesen was dazu angeboten wird. Weitere hilfreiche Stichwörter in diesem Zusammenhang könnten sein "ItemData" und "ItemsSelected".
Freundliche Grüße
MaggieMay

MzKlMu

Hallo,
ZitatDer Cursor (?) des Listenfeldes springt natürlich nicht von alleine auf den ausgewählten Datensatz. Gibt es dazu auch noch einen Tip?
Ja, im Formularereignis "Beim Anzeigen" kann man dem Listenfeld den Primärschlüssel des angezeigten Datensatzes zuweisen.
Die gebunden Spalte des Listenfeldes sollte dabei auf 1 stehen und darin ebenfalls der PS angezeigt werden. Dann geht es so:
Me.NameListenfeld = Me.FormularfeldMitPs

Gruß Klaus

ibins

Ich hatte die Ereignisprozedur auf "beim Öffnen" versucht und hat nicht geklappt. Auf "beim Anzeigen" wäre ich nicht gekommen!

Herzlichen Dank für die tolle Hilfe und die starken Nerven, die ihr immer mit uns Anfängern habt!

MaggieMay

Hallo,

"Beim Öffnen" ist zu früh, da dort noch gar nicht auf die zugrunde liegenden Daten zugegriffen werden kann.
"Beim Laden" wäre eine Alternative, die sich aber nur auf den ersten Datensatz bezieht.
Freundliche Grüße
MaggieMay