PDA

Vollständige Version anzeigen : Datensatz im Unterformular finden


digihumi
27.03.2006, 22:54
Hallo Zusammen,
habe folgendes Problem:
2 Unterformulare in einem Registersteuerelement, dass 1 Unterformular ist ein Endlosformular, das 2 Unterformular ist ein einzelnes Formular.
Ich möchte aus dem 1. UF einen Datensatz im 2. UF finden.

Private Sub info_Click()



Dim glbFeldname As String
Dim glbFormname As String


glbFeldname = DS_ID
glbFormname = AnwFormular

Dim Suchstring As String

Suchstring = "[" & glbFeldname & "] = " & Me(glbFeldname)


Forms(glbFormname).Form.RecordsetClone.FindFirst Suchstring
Forms(glbFormname).Form.Bookmark = Forms(glbFormname).Form.RecordsetClone.Bookmark
Forms![FrmKontakte]![Kontakte] = 3
End Sub

Das ganze funktioniert nur dann, wenn das 2. UF im Hintergrund bereits als Hauptformular geöffnet wurde. Wie muss ich vorgehen, damit ich das 2. UF nicht als Hauptformular und als Unterformular geöffnet haben muss, um den passenden Datensatz zu finden?? Vielen Dank für eure Hilfe

Gruss digihumi

Smaug
28.03.2006, 07:32
wenn UFo2 das UFo von UFo1 ist dann:
Me!Subform2.Form.Recordset.FindFirst
wenn UFo2 auf einer Ebene unterhalb des Hauptformulars liegen:
Me.Parent!Subform2.Form.Recordset.FindFirst
bzgl. Subform: entscheidend ist jeweils der Name des Unterformularsteuerelements nicht der Name des darin eingebetteten Unterformulars

digihumi
28.03.2006, 08:52
Hallo Smaug,

beide UFo befinden sich jeweils unabhängig voneinander eine Stufe unterhalb vom Hauptformular. Das Hauptformular ist ein Registersteuerelement. Das 1. UFo ist auf Seite 0 und das 2. UFo ist auf Seite 3. Könntest du anhand von meinem Codebeispiel die entsprechende Änderungen erklären / vornehmen?
Ich habe das mit dem Unterformularsteuerelement nicht verstanden, ist dieses Steuerelement der Feldname, nach dem im UFo gesucht wird?

In meinem Fall wäre das der Autowert (IdNr) des 1. UFo und der Autowert (IdNr) des 2. UFo.

Gruß
digihumi

JPA
28.03.2006, 09:08
Morchen,

du musst über eine Recordset-Variable gehen:


Private Sub info_Click()
Dim glbFeldname As String
Dim glbFormname As String
DIm rs as Recordset


glbFeldname = DS_ID
glbFormname = AnwFormular

Dim Suchstring As String

Suchstring = "[" & glbFeldname & "] = " & Me(glbFeldname)

Set rs=Forms(glbFormname).Form.RecordsetClone

rs.FindFirst Suchstring
If not rs.nomatch then
Forms(glbFormname).Form.Bookmark = rs.bookmark
Forms![FrmKontakte]![Kontakte] = 3
end If
End Sub


Peace & b wild
JPA

Smaug
28.03.2006, 09:11
prinzipiell ändert sich an der FindFirst-Syntax zur Suche nix. In den neueren Versionen musst Du allerdings kein Recordset mehr klonen sondern kannst direkt auf die Recordset-Eigenschaft verweisen.
Das Registersteuerelement sollte unerheblich sein. In Deinem Fall liegen beide Unterformulare auf der gleichen Ebene - unterhalb des Hauptformulars.
Im Formular-Unterformularzugriff ist der Begriff Unterformularsteuerelement so zu verstehen, dass es sich jeweils um den Steuerelementnamen handelt in dem das Unterformular eingebettet ist (auf der Homepage von Arne Dieckmann ist ein sehr schönes Beispiel). Bei Dir müsste also die Syntax wie folgt lauten:
Me.Parent!UnterformularsteuerelementnameVonUFO2.Form.Recordset.FindFirst Suchstring