Discussion:
Funktionalität von "Filtern nach"in Unterformularen mit VBA nachbilden
(zu alt für eine Antwort)
Reinhard Schall
2006-05-24 23:07:24 UTC
Permalink
Hallo

Problemstellung: Ich möchte gerne die Funktionalität von "Filten nach:" perVBA realisieren.

Hier eine kleine Beispieldatenbank.


Formulare:
Hauptformular: frmHaupt, gebunden an Tabelle tblHaupt
Unterformular1: frmU1, gebunden an Tabelle tblU1
Unterformular2: frmU2, gebunden an Tabelle tblU2

Button: frmU1.cboTest

Zu filterndes Feld:

Feld1 in Formular frmU2. Um es einfach zu machen: Es sollen alle Datensätze angezeigt werden die in Feld1 den Wert 5 enthalten.
Beziehung: frmU1 zu frmU2 = 1:n


Fragen:

Wie lautet der Befehl um eventuell vorhandene Filter auszuschalten?

Wie bekomme ich, nachdem vorhandene Filter ausgeschaltet sind wieder einen Filter rein?

Der Befehl:
Forms![frmHaupt].Form![frmU1].Filter = "Forms![frmHaupt].Form![frmU1].[Feld1] = '5'"
führt zur Meldung: Objekt unterstützt diese Eigenschaft oder Methode nicht.

Wenn ich stattdessen

DoCmd.ApplyFilter , "Forms![frmHaupt].Form![frmU1].[Feld1] = '5'"

anwende bekomme ich die Fehlermeldung: "Sie können die AnwendenFilter-Aktion nicht für dieses Fenster einsetzen."

Was mache ich falsch? Wer hat eine Idee? Wenn ich über das Kontextmenü und "Filtern nach" den Filter aktivieren kann, dann muss es
doch auch mit VBA-Entsprechung klappen! Oder ?1

Viele Grüße
Reinhard
Mark Doerbandt
2006-05-25 05:25:50 UTC
Permalink
Hallo, Reinhard,
Post by Reinhard Schall
Forms![frmHaupt].Form![frmU1].Filter = "Forms![frmHaupt].Form![frmU1].[Feld1] = '5'"
probiere mal

Forms![frmHaupt]![frmU1].Form.Filter = "[Feld1] = '5'"
Forms![frmHaupt]![frmU1].Form.FilterOn = True

Gruss - Mark
--
Informationen fuer Neulinge in den Access-Newsgroups unter
http://www.doerbandt.de/Access/Newbie.htm

Bitte keine eMails auf Newsgroup-Beiträge senden.
Reinhard Schall
2006-05-25 10:51:45 UTC
Permalink
Hallo Mark,

vielen Dank für den genialen Tipp!!! Ich musste nur noch eine kleine Änderung vornehmen.

Aus:

Forms![frmHaupt]![frmU1].Form.Filter = "[Feld1] = '5'"

musste ich
Forms![frmHaupt]![frmU1].Form.Filter = "Forms![frmHaupt]![frmU1]![Feld1] = '5'"
weil sonst die Meldung: "Sie haben die vorherige Aktion abgebrochen" kam. Offensichtlich muss dem Filter der Bezug auf das
Formular in dem das zu filternde Feld liegt mitgegeben werden, wenn der Aufruf nicht aus dem betroffenen Formular selbst kommt.

Wie gesagt: Vielen Dank noch einmal für deinen Tipp. Aus der Hilfe wäre ich nie darauf gekommen, die Syntax zu wählen, die du hier
gezeigt hast. Gemeinerweise zeigt VBA auch keine Syntaxfehler an, so lange man nicht richtig daneben langt.

Viele Grüße
Reinhard
Post by Mark Doerbandt
Hallo, Reinhard,
Post by Reinhard Schall
Forms![frmHaupt].Form![frmU1].Filter = "Forms![frmHaupt].Form![frmU1].[Feld1] = '5'"
probiere mal
Forms![frmHaupt]![frmU1].Form.Filter = "[Feld1] = '5'"
Forms![frmHaupt]![frmU1].Form.FilterOn = True
Gruss - Mark
--
Informationen fuer Neulinge in den Access-Newsgroups unter
http://www.doerbandt.de/Access/Newbie.htm
Bitte keine eMails auf Newsgroup-Beiträge senden.
Loading...