PDA

Vollständige Version anzeigen : Wurm in abgeändertem Filterbeispiel


Klausius
15.06.2001, 02:10
Hallo

Ich habe im Netz ein Beispiel (Code) gefunden
mit dem es möglich sein soll Formularinhalte zu filtern.
Ich habe den Code etwas abgeädert da er sich mit dem Filtern eines Unterformulares beschäftigte.
Mein Ziehl ist es aus einem Formular mit ungebundenem Textfeld den Inhalt des geöffneten Hauptformulares zu filtern.
Der Code dazu welcher im Formular mit dem ungebundenem Textfeld ist lautet :

Private Sub Filtertest_DblClick(Cancel As Integer)
Dim f_sub As Form
Dim strCriteria As String

strCriteria = "Nachname LIKE '" & Me!Filtertest & "*'"

Set f_sub = Me![Hauptformular].Form

f_sub.Filter = strCriteria
f_sub.FilterOn = True

Als Fehlermeldung erhalte ich das Das Feld Hauptformular nicht gefunden wurde. Was kein Wunder ist, denn ein solches Feld existiert nicht. Der Filter soll ja auch auf das Feld Nachname im Formular Hauptformular angewandt werden.

Ein Filtern mittels Abfrage und Unterformular kommt leider nicht in Frage da das Hauptformular bereits 3 Unterformulare besitzt. Und wenn das Hauptformular dann auch noch ein Unterformular vom Suchformular wird steige ich da überhaupt nicht mehr durch. Alle anderen Beispiele zu Filtern von Datensätzen die ich gefunden habe benutzen halt ein Unterformular. Geht es wirklich nicht ohne ???

Ach ja, ich benutze Access 2000

Klaus

A.S.
15.06.2001, 02:21
Hallo Klaus,

Set f_sub = Forms("Hauptformular")

dürfte das sein, was Du suchst.

HTH

Arno

Klausius
15.06.2001, 03:01
Hallo Danke für die Antwort.

Werd ich gleich morgen mal ausprobieren (muß heute früh raus)

Hmmm, nun will ich ja was dazu lernen. Heist das Me! bezieht sich immer auf ein Feld ??

Klaus

A.S.
15.06.2001, 04:47
Hallo Klaus,

das

Me

referenziert in Berichten und Reports den jeweiligen Bericht bzw. Report zu dem das entsprechende Coding gehört. Um auf eine andere Form zuzugreifen mußt Du diese direkt ansprechen. Das geht auf zweierlei Arten.

Einmal wie oben beschrieben über die Forms-Auflistung der DB und einmal über den Formular-Pfad (welcher eigentlich nur eine andere Schreibweise der Forms-Auflistung ist). Diesen schreibst Du für das Hauptformular z.bsp. so Forms!hauptformular

Gruß

Arno

Klausius
15.06.2001, 15:02
Hallo
Also das richtige Formular wird schon mal angesprochen.
Allerdings filtert er nun alle Datensätze welche einen Nachnamen besitzen. Ich denke mal hier ist noch etwas falsch.

strCriteria = "Nachname LIKE '" & Me!Filtertest & "*'"

muss ich hier nun auch wieder auf das Formular verweisen obwohl diese Prozedur ja in dem Formular steht wo auch das ungebundene Textfeld Filtertest steht ??
denn soweit ich weis ist die Erweiterung *'" doch richtig oder ??

Klaus

WalterS
15.06.2001, 16:59
Hallo!
Entschuldigung dass ich mich hier einmische !

Wenn du auch die Datensätze ohne Familiennamen sehen willst, musst du dass AC sagen !!

strCriteria = "(Nachname LIKE '" & Me!Filtertest & "*') or (isnull(Nachname))"

Klausius
15.06.2001, 17:09
Entschuldigung

Dann habe ich mich missverständlich ausgedrückt. Er filtert nun wirklich alle Datensätze mit Nachnamen raus. Auch diese welche garnicht dem Suchwort entsprechen. Bei dem Suchwort Herburg zum Beispiel bekomme ich auch die Datensätze in denen als Nachname Maier steht. Das er die Datensätze wo kein Nachname drin steht wegfiltert ist garnicht schlecht. Sonst würde ich sagen er filtert überhaupt nichts.

Klaus

WalterS
15.06.2001, 17:45
Hallo!
Die ungebundenen Felder dürfen nicht im Detailbereich stehen, sondern gehören in den Kopf - oder Fussbereich, die Schaltfläche ebenfalls

Der Code beim Click

strCriteria = "(Nachname LIKE '" & Me!Filtertest & "*') or (isnull(Nachname))"

me.filter=""
me.filter=strCriteria
me.filteron = true

funkt bei mir

Ich habe meine Datensätze in einem Unterformular "Ergebnis" (endlos) so gefiltert m(eSAP ist der Suchbegriff)

Me!Ergebnis.Form.Filter = ""
Me!Ergebnis.Form.Filter = "(SAP like '*" & eSAP & "*')"
Me!Ergebnis.Form.FilterOn = True
Me!Ergebnis.Requery

Klausius
15.06.2001, 23:21
Hallo

Du hattest geschrieben : Die ungebundenen Felder dürfen nicht im Detailbereich stehen, sondern gehören in den Kopf - oder Fussbereich, die Schaltfläche ebenfalls
Der Code beim Click

Hmm, auch wenn es sich um ein separates Suchformular handelt und das zu durchfilternde Feld sich in einem anderen Formular befindet ?? Also ausprobieren will ich das natürlich.

Und wenn ich Dich richtig verstanden habe me.filter=""
me.filter=strCriteria
me.filteron = true

Statt :

f_sub.Filter = strCriteria
f_sub.FilterOn = True

Das werd ich auf jeden Fall mal probieren.

Klaus

A.S.
16.06.2001, 08:39
Hallo Klaus,

das "Me...." nur dann anwenden, wenn sich die filternde Prozedur in dem Formular befindet, in welchem gefiltert werden soll. Wenn die Prozedur sich weiterhin in Deinem externen Suchformular befindet, mußt Du weiterhin mit der Form....-Sequenz arbeiten.

Also entweder über die Bindung an ein Form-Objekt, oder wie sowohl von mir beschrieben als auch von Walter mit einem Beispiel gebracht über die, ich nenne es jetzt mal so, Adressierungskette zum entsprechenden Formular.

Also muß es bei Dir - bei Einsatz eines Suchformulars - eigentlich so aussehen.


Private Sub Filtertest_DblClick(Cancel As Integer)
Dim strCriteria as String

strCriteria = "([Nachname] LIKE " & Me.Filtertest & " OR IsNull([Nachname])"
Forms!HauptFormular.Form.Filter = ""
Forms!HauptFormular.Form.Filter = strCriteria
Forms!HauptFormular.Form.FilterOn = True

End Sub

Gruß

Arno