Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!

Mobiles Hauptmenü

Unterformular Filtern

Begonnen von Lehrling Frank, Mai 13, 2023, 20:25:39

⏪ vorheriges - nächstes ⏩

Lehrling Frank

Guten Abend Ihr Fachleute,
nach intensiver Recherche habe ich leider für mein Problem keine Lösung gefunden, obwohl ähnliche Fragen schon gestellt worden sind.
Auf einem Hauftformular (frm_Dokumente) ist ein Treeview und ein Unterformular (frm_Dokumente_AbfrageUF).
Durch einen Doppelklick auf einen Knoten im Treeview wird der gesamte Pfadname an eine Variable Namens strgFilterwert übergeben.
Nun soll das Unterformular (frm_Dokumente_AbfrageUF) auf das Feld "Struktur_Zuordnung" gefiltert werden und zwar auf den Wert , der in der Variablen strgFilterwert "gespeichert" worden ist.

Ich denke es gibt zwei Ansätze für dieses Problem:

1. Filterkriterium per VBA direkt an das Unterformular übergeben
Hierzu war z.B. einer meiner vergebens ausprobierten Ansätze:

Private Sub tvwDokuFolder_DblClick()

Set objTreeView = Me.tvwDokuFolder.Object

strgFilterwert = objTreeView.SelectedItem.FullPath

Debug.Print strgFilterwert

Me![Struktur_Zuordnung].Form.Filter = "[Struktur_Zuordnung] = 'strgFilterWert'"
Me![Struktur_Zuordnung].Form.FilterOn = True
End Sub

Folgende Fehlermeldung tritt auf:
Laufzeitfehler '438':
Objekt unterstützt diese Eigenschaft oder Methode nicht!

Debuggen Fehler an folgender Stelle:
Me![Struktur_Zuordnung].Form.Filter = "[Struktur_Zuordnung] = 'strgFilterWert'"

Habe auch zu Testzwecken versucht direkt einen Wert anstatt der Variablen anzugeben. Ebenfalls ohne positives Ergebnis.

2.) Filterkriterium der Abfrage ändern.
Das Unterformular bezieht die Daten aus einer Abfrage qry_Dokumente_AbfrageUF ohne Filterkriterium
Nach Doppelklick auf einen Knoten bekommt die o.g. Abfrage ein Filterkriterium für das Feld "Struktur_Zuordnung" übergeben. Danach müsste das Unterformular "frm_DokumenteUF" aktualisiert werden.
Hierfür habe ich aber keinen nennenswerten Ansatz gefunden außer

Dim strgFilterwert As String
Set objTreeView = Me.tvwDokuFolder.Object
strgFilterwert = objTreeView.SelectedItem.FullPath
Debug.Print strgFilterwert
[Query]![qry_Dokumente_AbfrageUF]![Struktur_Zuordnung] = strgFilterwert

Da sich auf dem Hauptformular kein Steuerelement befindet habe ich auch keine Verknüpfung in den Eigenschaften des Unterformulars angegeben (Verknüpfung von & Verknüpfung nach).

Ich hoffe ich konnte mein Problem enigermaßen verständlich beschreiben und bedanke mich schon jetzt für eure Antworten und Lösungsansätze.

Schönen Abend
Lehrling Frank
 


ebs17

ZitatUnterformular (frm_Dokumente_AbfrageUF)
Me![Struktur_Zuordnung].Form.Filter = "[Struktur_Zuordnung] = 'strgFilterWert'"

Mit welchem Namen sollte man das Unterformular-Control ansprechen?
Mit freundlichem Glück Auf!

Eberhard

PhilS

Zitat von: Lehrling Frank am Mai 13, 2023, 20:25:39Me![Struktur_Zuordnung].Form.Filter = "[Struktur_Zuordnung] = 'strgFilterWert'"
Du musst die fixen Textliterale mit dem *Wert* aus der Variable verknüpfen.
Me![Struktur_Zuordnung].Form.Filter = "[Struktur_Zuordnung] = '" & strgFilterWert & "'"

Weiterhin schließe ich mit den Zweifeln von @ebs17 an, dass "Struktur_Zuordnung" nicht der tatsächliche Name des Unterformularsteuerlements ist.
Neue Videoserie: Windows API in VBA

Klassische CommandBars visuell bearbeiten: Access DevTools CommandBar Editor

Lehrling Frank

Hallo Eberhard, hallo PhilS,

wie recht Ihr mal wieder habt. Natürlich war meine Interpretation der Syntax falsch. Habe einen Hinweis hier im Forum falsch verstanden. Aus 
,,Und, ganz wichtig, "NameUnterformular" MUSS der Name des Unterformular-Steuerelements (ich hasse dieses Wort) sein, und NICHT der Name des eingebetteten Formulars."
habe ich Steuerelement eines Feldes gemacht. Somit kam die Doppelung zustande, was mich schon ein wenig stutzig gemacht hast.

Hier nun meine Lösung:
'Me![Dokumente].Form.Filter = "[Struktur_Zuordnung] = '" & strgFilterwert & "'" 'Genaue Filterung
'Me![Dokumente].Form.Filter = "Struktur_Zuordnung like '*" & strgFilterwert & "*'" ' mit vor- und nachgestellter Wildcardfunktion
Me![Dokumente].Form.Filter = "Struktur_Zuordnung like '" & strgFilterwert & "*'" ' mit nachgestellter Wildcardfunktion
Me![Dokumente].Form.FilterOn = True

Nochmals DANKESCHÖN für eure Informationen.
Lehrling Frank