Hallo,
ich habe jetzt noch einmal eine Frage zum Suchen in Unterformularen.
Ich habe ein Formular Katalog, welches auf Basis der Tabelle Katalog besteht.
In diesem Formular existiert ein Unterformular, welches auf einer Abfrage qry_praemienliste basiert. Insgesamt habe ich 3 verknüpfte Tabellen in diesem Projekt (alle in einer Oracle-DB). Eine für den Prämienkatalog (Katalog), eine für die Prämien (Praemien) und eine Tabelle mit der Zuordnung von Katalog zu Prämie (Katalog2Praemien).
Das Unterformular (praemienliste) ist über die
praemienliste.Katalog.ID (name = katalogid) mit dem Hauptformular (ID) verknüpft.
Im Formular werden immer zu einem angezeigten Katalog alle über die Tabelle Katalog2Praemien zugeordneten Prämien angezeigt.
Ich möchte nun (am liebsten im Hauptformular) ein Suchfeld(praemiensuche) für die Prämie (PRAEMIE) einbauen, welches nach aktualisieren den ersten gefundenen Katalog im Hautpformular aufruft und im Unterformular die gefundene Prämie focussiert.
Ich habe versucht es wie folgt zu machen:
Private Sub praemie_AfterUpdate()
Dim rst As Recordset
Dim strFind As String
With Me![praemienliste].Form
Set rst = Me!praemienliste.Form.RecordsetClone 'praemienliste.Form.RecordsetClone
strFind = "praemie = '" & Forms!Katalog.praemiensuche & "'"
rst.FindFirst strFind
If rst.NoMatch Then 'nicht gefunden
MsgBox "Prämie '" & Me!praemiensuche & _
"' wurde nicht gefunden", , "Suche"
Else 'gefunden
Me.Recordset.FindFirst "ID = " & rst!katalogid
.Recordset.FindFirst strFind
End If
rst.Close: Set rst = Nothing
End With
End Sub
Leider bekomme ich beim Verlassen des Suchfeldes immer die Fehlermeldung:
Element in dieser Auflistung nicht gefunden.
Der Focus im Debugger steht dann auf der ersten Zeile im Else-Zweig.
Allerdings ist der eindeutige Schlüssel im Hautpformular das Feld ID, welches auch so heisst. Im Unterformular heisst dieses Feld katalogid und enthält die Katalog.ID aus der Abfrage - welches die Katalog.ID aus der Tabelle Katalog darstellt. Über diese beiden Felder läuft auch die Verknüpfung zwischen Haupt- und Unterformular.
Meiner Meinung nach sieht das doch gut aus?
Suche ich übrigens nach einer Prämie, die es tatsächlich gibt, so kommt die MSG-Box. Allerdings spring das Hauptformular danach in den nächsten Katalog. Das ist auch irgendwie doof. Muss ich mir da die ID merken und wieder zurückspringen um das zu verhindern?
Achja...und gleich noch eine Frage hinterher. Kann ich eigentlich auch in verknüpften Oracle-Tabellen eine Deklarierung wie
Dim rst as DAO.RecordSet machen...und warum ist DAO sicherer?
Gruß und vielen Dank vorab für eure Tipps,
Achim