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!!!
Hallo,
was ist "mus_id" für ein Datentyp (Text/Zahl) ?
Hallo MzKiMu!
"Mus_id" ist eine Zahl und der Primäschlüssel der tblMusikanten.
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.....
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
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.
So funktioniert´s:
DoCmd.OpenForm "frmRegisterkarte"
Forms!frmRegisterkarte.Recordset.FindFirst "mus_id=" & Me!lstMusikanten.Column(0)
Warum auch immer.... :D
Hallo,
ZitatWarum auch immer....
weil Du eine falsche gebundene Spalte hast.
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.
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".
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
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!
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.