Benutzer mit den meisten Antworten
Unterforumular aus formopen filtern

Frage
-
Hallo
ich habe ein Endlosformular. Über eine Schaltfläche des jeweiligen Datensatzes rufe ich ein weiteres Formular auf. Hier im Beispiel "FoDetail". In diesem Formular steckt ein Unterformular und dieses Unterformular möchte ich filtern.
Hier das Event aus dem Endlosformular
Private Sub sfDetail_Click() Dim stDocName As String Dim strWhere As String strWhere = "[kursid]=" & Me.TfKursNr stDocName = "FoDetail" DoCmd.OpenForm stDocName, , , strWhere, , , "liste" End Sub
Wie kann ich den Filter an das Unterformular übergeben? Der Filter wird ja direkt über openForm übergeben.
Hat jemand eine Idee?
Ich habe auch schon gesucht und folgendes in das Form_load Event des Hauptformulars eingefügt. Aber es funktioniert nicht.
Me!foDetailsKursid.Form.filter = Me.filter Me!foDetailsKursid.Form.FilterOn = True
Liebe Grüße, die Luzie!
Antworten
Alle Antworten
-
Hallo Matthias,
danke für die Antwort.
Muss ich mal probieren.
Ich habe es aber jetzt doch ganz anderes gemacht und zwar das Unterformular entfernt und dafür eine Liste ins Hauptformular eingefügt. Den Parameter dann mit openArgs übergeben.
Liebe Grüße, die Luzie!
-
Hallo Luzie,
schön zu hören, dass Du eine Lösung gefunden hast.
Schau Dir bitte trotzdem in der Hilfe noch einmal die Beschreibungen zu den Ereignisse Beim Laden und Beim Öffnen näher an. Es gibt dort einen Unterschied.
Beim Öffnen
Bei Formularen tritt das Open-Ereignis beim Öffnen eines Formulars ein, jedoch bevor der erste Datensatz angezeigt wird.Beim Laden
Das Load-Ereignis tritt ein, wenn ein Formular geöffnet wird und seine Datensätze angezeigt werden.Das Wissen um diese Unterschiede ist hilfreich wenn es darum geht, dass richtige Ereignis für eine Aktion zu finden.
CU
Thomas@Team-Moeller.de
Blog: Blog.Team-Moeller.de
Homepage: www.Team-Moeller.de
- Bearbeitet Thomas Möller MVP Samstag, 10. Oktober 2015 11:29
-
Hallo Thomas,
in meinem Fall war, wie ich schon beschrieben habe, das Unterformular überflüssig, da es mir wirklich nur und das Anzeigen der Datensätze ging und um das Löschen.Aber trotzdem, dass Datensätze eines Unterformulars über docmd.openform eines 3. Formulars gefiltert werden sollen, kann durchaus auch mal vorkommen. Deshalb habe ich es jetzt doch nochmals probiert, bzw. den alten Zustand wieder hergestellt und die Befehle in das Form_open des Hauptformulars eingebaut.
Ich habe den Filter-Aufruf (strWhere) in das aufrufende Formular eingebaut
Private Sub sfDetail_Click() Dim stDocName As String Dim strWhere As String strWhere = "[kursid]=" & Me.TfKursNr stDocName = "FoDetail" DoCmd.OpenForm stDocName, , , strWhere, , , Me.TfKursNr End Sub
Im Hauptformular "FoDetail" habe ich dies in das Form_open-Event geschrieben
Private Sub Form_Open(Cancel As Integer) Me!foDetailsKursid.Form.filter = Me.filter Me!foDetailsKursid.Form.FilterOn = True End Sub
Alledings wird der Filter im Unterformular "foDetailsKursid" nicht ausgelöst, es werden alle Datensätze dargestellt.
Liebe Grüße, die Luzie!
-
Hallo Luzie!
Alledings wird der Filter im Unterformular "foDetailsKursid" nicht ausgelöst, es werden alle Datensätze dargestellt.
Was hältst Du davon, wenn Du eine kleine Beispieldatenbank bereitstellst. Dann brauchen wir nicht allgemein diskutieren sondern können Dein Problem konkret angehen.
CU
Thomas@Team-Moeller.de
Blog: Blog.Team-Moeller.de
Homepage: www.Team-Moeller.de- Bearbeitet Thomas Möller MVP Sonntag, 11. Oktober 2015 13:32
-
Hallo Luzie!
Die Tatsache, dass Dein Detailformular an keine Datenquelle gebunden ist, führt dazu, dass die Filter-Eigenschaft nicht zur Verfügung steht.
Ich habe den Code wie folgt umgestellt:
Private Sub sfDetail_Click() Dim stDocName As String stDocName = "FoDetail" DoCmd.OpenForm stDocName, , , , , , Me.tfKursid End Sub
Private Sub Form_Load() Me.tfoa = Me.OpenArgs Me.lbdetails.RowSource = "select nr, detail, did, kursid from qryDetailKursid where kursid=" & Me.OpenArgs & " order by detail" Me!foDetailsKursid.Form.filter = "kursid=" & Me.OpenArgs Me!foDetailsKursid.Form.FilterOn = True End Sub
Auf das Sichern der OpenArgs im Steuerelement tfoa kannst Du auch verzichten - es sei denn, Du brauchst es später noch. Aber da stehen Dir die OpenArgs auch noch zur Verfügung.
HTH
Thomas@Team-Moeller.de
Blog: Blog.Team-Moeller.de
Homepage: www.Team-Moeller.de- Bearbeitet Thomas Möller MVP Montag, 12. Oktober 2015 18:02