Ich benutze eine etwas exotische Variante ein Formular mit ausgewählten Datensätzen zu öffnen:
Dem Formular wird per Pointer ein AdodB.Recordset in OpenArgs übergeben.
Das Recordset wird so befüllt:
With rs .ActiveConnection = conn .CursorType = adOpenDynamic .CursorLocation = adUseServer End With 'Jetzt die Abfrage ausführen Set rs = cmd.Execute
Das Formular wird als Dialog geöffnet mit diesem Code:
'Mehr als 1 Patient gefunden --->> Formular öffnen mit den gefundenen Patienten
DoCmd.OpenForm "Eingabe von Patientendaten", acNormal, , , acFormEdit, acDialog, CVar(GetPointerToObject(rs))
Das funktioniert prima so.
Im Open-Ereignis des geöffneten Formulars wird das Recordset des Formulars anhand der OpenArgs gesetzt.
Obendrein wird das Recordset einer Listbox ebenfalls mit den OperArgs besetzt.
Die Listbox zeigt also dieselben Datensätze wie das Formluar selber.
Jetzt geht es darum, nach einem Klick auf einen Eintrag der Listbox den entsprechenden Datensatz zum atuellen DS des Formulars zu machen.
Das funktioniert leider nicht so ganz:
MIt diesem Code Me.Recordset.Find ("[ID_proband]=" & Me.lstProbandListe.Column(1))
wird manchmal 2x, manchmal 4mal der richtige DS angwählt, dann hört es aber auf.
Wie kommt das ? Ich habe zwar vage Angaben gefunden, daß das manchmal nicht fnktioniert, aber nicht wrum und auch nicht wie ich das vermeiden kann