Datenfilter auf Unterformular (vba)

Ich hoffe ich bin hier im richtigen Bereich gelandet

Ich verfüge über Access 2003

Also och habe folgendes Problem ich habe ein Formular und ein Unterformular. Im Formular gebe ich „Filterkriterien“ ein die dann die Ausgabe im Unterformular ändern sollen.

Quellcode:
Dim sSQL As String
Dim whereklausel As String
whereklausel = „“
sSQL = „“

'*** Where-Klausel erstellen ***
If Forms!frm_Literaturübersicht!KF_uebersicht_Titel „“ Then
whereklausel = " AND tab_Literatur.Titel = ‚" + Forms!frm_Literaturübersicht!KF_uebersicht_Titel + "‘"
End If

If Forms!frm_Literaturübersicht!KF_uebersicht_Thema „“ Then
whereklausel = whereklausel + " AND tab_Thema.Thema = ‚" + Forms!frm_Literaturübersicht!KF_uebersicht_Thema + "‘"
End If

'*** Unterformular füllen ***
sSQL = „SELECT tab_Literatur.Titel, tab_Literatur.Autor, tab_Thema.Thema, tab_Literatur.ISBN, tab_Verlag.Verlag, tab_Literaturtyp.Literaturtyp, tab_Standort.Standort " + _
" FROM tab_Literatur, tab_Thema, tab_Standort, tab_Literaturtyp, tab_Verlag " + _
" WHERE tab_Literatur.Thema = tab_Thema.Thema_ID“ + _
" AND tab_Literatur.Verlag = tab_Verlag.Verlag_ID " + _
" AND tab_Literaturtyp.Literaturtyp = tab_Literaturtyp.Literaturtyp_ID " + _
" AND tab_Literatur.Standort = tab_Standort.Standort_Nr " + whereklausel + " "
Set Forms!frm_Literaturübersicht![ufrm_übersicht].Form.RecordSource = sSQL

Die letzte Zeile markert er mir dann mit den verschiedensten fehlern an ich weis mir leider nicht mehr zu helfen. Hoffe auf baldige hilfe

mfg Sebastian Plötz

Hallo Sebastian,

Im Formular gebe ich „Filterkriterien“ ein die
dann die Ausgabe im Unterformular ändern sollen.

ok, dafür definiert man für das UFO eine Abfrage, die auf die Filterkriterien des Hauptformulars zugreift.

Der Weg über die Datenbasis ist nicht immer sinnvoll.

Quellcode:
Dim sSQL As String
Dim whereklausel As String
whereklausel = „“
sSQL = „“

'*** Where-Klausel erstellen ***
If Forms!frm_Literaturübersicht!KF_uebersicht_Titel
„“ Then
whereklausel = " AND tab_Literatur.Titel = ‚" +
Forms!frm_Literaturübersicht!KF_uebersicht_Titel + "‘"
End If

If Forms!frm_Literaturübersicht!KF_uebersicht_Thema
„“ Then
whereklausel = whereklausel + " AND tab_Thema.Thema = ‚" +
Forms!frm_Literaturübersicht!KF_uebersicht_Thema + "‘"
End If

'*** Unterformular füllen ***
sSQL = „SELECT tab_Literatur.Titel, tab_Literatur.Autor,
tab_Thema.Thema, tab_Literatur.ISBN, tab_Verlag.Verlag,
tab_Literaturtyp.Literaturtyp, tab_Standort.Standort " + _
" FROM tab_Literatur, tab_Thema, tab_Standort,
tab_Literaturtyp, tab_Verlag " + _
" WHERE tab_Literatur.Thema = tab_Thema.Thema_ID“ + _
" AND tab_Literatur.Verlag = tab_Verlag.Verlag_ID " + _
" AND tab_Literaturtyp.Literaturtyp =
tab_Literaturtyp.Literaturtyp_ID " + _
" AND tab_Literatur.Standort = tab_Standort.Standort_Nr "

  • whereklausel + " "
    Set
    Forms!frm_Literaturübersicht![ufrm_übersicht].Form.RecordSource
    = sSQL

Die letzte Zeile markert er mir dann mit den verschiedensten
fehlern an ich weis mir leider nicht mehr zu helfen. Hoffe auf
baldige hilfe

na ganz einfach: Eine SQL - Anweisung darf nicht mehr als 254 Zeichen enthalten… zähle mal deine Buchstaben und (Leer)Zeichen nach :frowning:

Grüße aus Schönberg (Lübeck)
Wolfgang
(Netwolf)

Deine letzte Anweisung ist keine Set-Anweisung sondern nur eine Wertzuweisung:

Forms!frm_Literaturübersicht![ufrm_übersicht].Form.RecordSource
= sSQL
Forms!frm_Literaturübersicht![ufrm_übersicht].Form.Requery

Mehr ist nicht zu machen.

Viele Grüße
EPa

PS: Die SQL-Anweisung kann durchaus auch länger sein, wenn diese auf diesem Weg erstellt wird. Nur die Direkteingabe in die Eigenschaft ist auf eine bestimmte Anzahl Zeichen beschränkt.

Alternativ kannst du auch versuchen, Filter zu setzen:

Forms!frm_Literaturübersicht![ufrm_übersicht].Form.Filter=WhereKlausel
Forms!frm_Literaturübersicht![ufrm_übersicht].Form.FilterOn=true

Achte drauf, dass deine WhereKlausel dann nicht mit AND beginnt.

Danke für die schnelle Antwort! Jetzt funktioniert’s.

Schöne Grüße aus Kiel!
Sebastian