Access-o-Mania

Access-Forum (Deutsch/German) => Formular => Thema gestartet von: Arndt am Mai 10, 2016, 12:20:19

Titel: Filtern von Endlosformular über ein Listenfeld
Beitrag von: Arndt am Mai 10, 2016, 12:20:19
Ich habe schon viel im Netz gesucht, verstehe die Syntax aber noch zu schlecht. Darf ich mal um Vorschläge bitten?

Gegeben:
Ein Formular [Logbuch] enthält ein Ufo, dass das Endlosformular [Logbuch-Zeitplanung] angezeigt. Dieses Basiert auf der Tabelle [t-teilnehmer].

Tabelle [t-teilnehmer] enthält ca. 50 Felder, eines davon heißt [massnahmedurchgaenge], das 10 verschiedene Werte annehmen kann. Diese Werte stammen aus einer [wertetabelle].

Aufgabe:
Im Formular [Logbuch] befindet sich ein ungebundenes Listenfeld. In diesem Listenfeld sollen diese 10 verschiedenen Werte angezeigt werden. Bei klick auf einen dieser Werte sollen nur die Datensätze angezeigt werden, die diesen Wert aufweisen.

Was muss ich da als Ereignisprozedur angeben?

Titel: Re: Filtern von Endlosformular über ein Listenfeld
Beitrag von: Beaker s.a. am Mai 10, 2016, 22:54:02
Hallo Arndt,
Schwierig mit so wenig Infos.
Zitatein Ufo, dass das Endlosformular [Logbuch-Zeitplanung] angezeigt. Dieses Basiert auf der Tabelle [t-teilnehmer].
Hört sich erstmal unlogisch an, kann ich aber nicht beurteilen.
Zitat
Tabelle [t-teilnehmer] enthält ca. 50 Felder
Hört sich nach suboptimalem Datenmodell an, kann ich aber auch
nicht beurteilen.
Ansonsten, (Luftcode)
Private Sub DeinListfeld_Click()
    Dim strSQL as String

    strSQL = _
          "SELECT T.Feld1, T.Feld2, ..., T.Feldn " _
       & "FROM t-Teilnehmer AS T " _
       & "WHERE T.massnahmedurchgaenge = " & Me!DeinListfeld.Value

    Me!NameDesUFos.Form.RowSource = strSQL

End Sub

Feld1 - Feldn sind die Felder, die im UFo angezeigt werden
Der Vergleichswert muss die gebundene Spalte des Listfeldes sein.
Falls dass nicht geht oder nicht gewünscht wird, musst Du statt
auf .Value auf die .Column(n) des Listfeldes zugreifen
& "WHERE T.massnahmedurchgaenge = " & Me!DeinListfeld.Column(n) (erste Spalte = 0).

hth
gruss ekkehard
Titel: Re: Filtern von Endlosformular über ein Listenfeld
Beitrag von: DF6GL am Mai 11, 2016, 08:18:23
Hallo,

zur Info:
habe dieses Problem nach Anfrage schon per Email bearbeitet...

Datensatzherkunft des Listenfeldes: 
SELECT DISTINCT [t-massnahmedurchgaenge].Maßnahmedurchgang FROM [t-massnahmedurchgaenge] ORDER BY [t-massnahmedurchgaenge].Maßnahmedurchgang DESC;


Ereignisprozedur des Listenfeldes:

Private Sub Liste87_Click()
    Me![Logbuch-Zeitplanung].Form.Filter = "[maßnahmedurchgang] = '" & Me!Liste87.Column(0) & "'"
    Me![Logbuch-Zeitplanung].Form.FilterOn = True
    Me![Logbuch-System].Form.Filter = "[maßnahmedurchgang] = '" & Me!Liste87.Column(0) & "'"
    Me![Logbuch-System].Form.FilterOn = True
    Me![Logbuch-Fragestellung].Form.Filter = "[maßnahmedurchgang] = '" & Me!Liste87.Column(0) & "'"
    Me![Logbuch-Fragestellung].Form.FilterOn = True
    Me![Logbuch-Aktuellerstand].Form.Filter = "[maßnahmedurchgang] = '" & Me!Liste87.Column(0) & "'"
    Me![Logbuch-Aktuellerstand].Form.FilterOn = True
    Me![Untergeordnet46].Form.Filter = "[maßnahmedurchgang] = '" & Me!Liste87.Column(0) & "'"
    Me![Untergeordnet46].Form.FilterOn = True
End Sub

Titel: Re: Filtern von Endlosformular über ein Listenfeld
Beitrag von: Beaker s.a. am Mai 11, 2016, 12:22:44
Da hat dann ja wenigstens einer alle Infos zur Fragestellung bekommen.
;)