Neuigkeiten:

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

Mobiles Hauptmenü

Listenfeld filtert aber wiederrum nicht...

Begonnen von Shayol, Dezember 09, 2015, 04:15:28

⏪ vorheriges - nächstes ⏩

Shayol

 Hallo ,

Ich habe in meinem Formular ein Listenfeld . Das Listenfeld(IstBauteilsuche) enthält folgende Spalte:(Feld:ID_Standort, Tabelle:Bauteile) und diese Spalte soll durch 3 Kontrollkästchen(Optionswerten: 1,2,3) gefiltert werden. Der VBA Code sieht folgender massen aus.
Private Sub Rahmen8_AfterUpdate()
    Dim strFilter As String
    If Rahmen8.Value = 1 Then
        strFilter = "ID_StandOrt=1"
    ElseIf Rahmen8.Value = 2 Then
        strFilter = "ID_StandOrt=2"
    Else
        strFilter = vbNullString
    End If
    Me.Filter = strFilter
    Me.FilterOn = True
End Sub


Im Fuß von Access sieht man die Datensätze die man im jeweiligen Tabelle, Formular usw. enthält. Wenn ich ein Kontrollkästchen benutzen filtert er die mir raus(sogar richtig), aber Visuel tut sich dort nichts...   


bahasu

Hi,

was passiert bei:
Private Sub Rahmen8_AfterUpdate()
    Dim strFilter As String
   
    Select Case Me.Rahmen8.Value
        Case 1
            strFilter = "ID_StandOrt=1"
   
        Case 2
            strFilter = "ID_StandOrt=2"
   
        Case Else
            strFilter = vbNullString
    End Select
   
    Me.Filter = strFilter
    Me.FilterOn = True
End Sub
Servus

Shayol

Ja wie gesagt , der Filter zeigt mir unten die richte Anzahl an Datensätze an. Woran es wirklich liegt ka .... Müsste ich dem Code noch explizip sagen , wo er  filtern soll ?! In diesem Listenfeld zb.?

Das wäre das Anfänger-Projekt.
http://www.legion-der-finsternis.de/lager.mdb

MzKlMu

Hallo,
willst Du das Formular filtern (was im Moment gemacht wird), das Listenfeld oder beides.
Das Listenfeld kann so nicht gefiltert werden, dem muss man eine neue Datenquelle (gefiltert) zuweisen.

Was soll bei der Auswahl von 3 passieren ?
Gruß Klaus

Shayol

#4
Zitat von: MzKlMu am Dezember 09, 2015, 08:01:15
Hallo,
willst Du das Formular filtern (was im Moment gemacht wird), das Listenfeld oder beides.
Das Listenfeld kann so nicht gefiltert werden, dem muss man eine neue Datenquelle (gefiltert) zuweisen.

Was soll bei der Auswahl von 3 passieren ?

Hallo MzKlMu,
Am liebsten würde ich die 3 Kontrollkästchen mit einbauen in den eigentlichen filter. siehe(Lager, Art,Hersteller, Hersteller Nr.), aber das bekomme ich nicht hin. Da ich den SQL-Code so anpassen muss mit unzähligen anweisenungen mit verschiederen möglichkeiten ^^ Das übersteigt mein kleines Können bei weitem.... Ich war froh , das ich zwei zusätzliche Filter hinzugefügt bekommen habe.  :P

Das Listenfeld sollte gefiltert gefiltert werden. Und wenn man auf 3 klickt, sollten alle Datensätze angezeigt werden.  Ich habe es auch schon ein Beispiel erstellt , da klappt alles wunderbar. Nur wenn ich es übertrage , geht nichts. ^^ http://www.legion-der-finsternis.de/Beispiel.accdb

DF6GL

Hallo,

was ist denn nun hier Sache?

Das Beispiel funktioniert doch. Oder ist das Beispiel gar nicht die betroffene DB?


Lad mal die "Problem"-DB hier hoch (komprimiert/repariert und gezippt) und beschreib anhand der Tabellen- und Feld-Namen, was genau und konkret passieren soll.
Viele Grüße vom Bodensee
Franz, DF6GL

Hilfestellung:  http://www.access-o-mania.de/forum/index.php?topic=6969.msg118738#msg118738

Links und Tipps:
1.   http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/
1a. http://www.tinohempel.de/info/info/datenbank/normalisierung.htm
1b. https://support.office.com/de-de/article/Grundlagen-des-Datenbankentwurfs-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5#bmterms
2.   http://www.donkarl.com
3.   https://web.archive.org/web/20201201233522/http://www.dbwiki.net/
4.   http://www.access-tutorial.de/
5.   http://www.tty1.net/smart-questions_de.htm
6.   http://access.joposol.com/accept

Last but not least:   < F1 > für Hilfe
;) Learning by doing not by spoon-feed ;)

Tipp: Find and Replace for Access

Shayol

#6
http://www.legion-der-finsternis.de/Lager.mdb

Das ist die eigentliche DB.

Ich habe in dieser DB schon 4 eingebaute Filter(Lager/Pfeiler, Art,Hersteller, Hersteller Nr.1). Die Kontrollhäckchen (Lack Ost, Lack West, Alle) sollen hinzugefügt werden als Filter zu den anderen bestehenden Filtern.  Gefiltert wird das im Listenfeld(IstBauteilsuche) die Spalte mit dem Feld(ID_StandOrt)--> Tabelle(Bauteile). Wenn das jeweilige Häckchen gesetzt wurde, sollten die jeweiligen Datensätze mit dem jeweiligen Optionswert rausgefiltert werden und angezeigt bekommen.


Das was ich im Beispiel [(siehe oben) http://www.legion-der-finsternis.de/Beispiel.accdb] gemacht habe , so sollte es laufen. Nur ich bekomme es nicht umgesetzt in die eigentliche DB.(Lager.mdb)

DF6GL

#7
Hallo,

wirf die unsäglichen Formularfeld-Verweise aus der Listenfeldabfrage heraus. Setze den SQL-String mit den entspr. Kriterien per VBA zusammen und weise den String der Eigenschaft "Rowsource" des Listenfeldes zu:


Sub frm_Requery()

Dim strSQL As String, strKrit As String

strSQL = "SELECT Bauteile.ID_Bauteil, StandOrt.StandOrt, Lager.Lager, Art.Art, Hersteller.Hersteller, Bauteile.Hersteller_Nr_1, Bauteile.Symbol_Nummer, Bauteile.Hersteller_Nr_2, Bauteile.Beschreibung, Bauteile.ID_Hersteller_F2, Bauteile.ID_Lager_F, Bauteile.ID_Hersteller_F, Bauteile.ID_Art_F, Bauteile.Schrank, Bauteile.Fach, Bauteile.Ebene, Bauteile.Reihe, Lager.Pfeiler, Lager.LagerOrtBeschreibung, Bauteile.ID_StandOrt " & _
" FROM Lager INNER JOIN (Art INNER JOIN (StandOrt INNER JOIN (Hersteller INNER JOIN Bauteile ON Hersteller.ID_Hersteller = Bauteile.ID_Hersteller_F) ON (StandOrt.ID = Bauteile.[ID_StandOrt]) AND (StandOrt.ID = Bauteile.[ID_StandOrt])) ON Art.ID_Art = Bauteile.ID_Art_F) ON Lager.ID_Lager = Bauteile.ID_Lager_F "


Select Case Me!Rahmen8

Case 1
If Not IsNull(Me!cboLager) Then strKrit = strKrit & " and ID_Lager_F = " & Me!cboLager
If Not IsNull(Me!cboHersteller) Then strKrit = strKrit & " and ID_Hersteller_F = " & Me!cboHersteller
If Not IsNull(Me!cboArt) Then strKrit = strKrit & " and ID_Art_F = " & Me!cboArt
strKrit = strKrit & " and ID_StandOrt=1"

Case 2
If Not IsNull(Me!cboLager) Then strKrit = strKrit & " and ID_Lager_F = " & Me!cboLager
If Not IsNull(Me!cboHersteller) Then strKrit = strKrit & " and ID_Hersteller_F = " & Me!cboHersteller
If Not IsNull(Me!cboArt) Then strKrit = strKrit & " and ID_Art_F = " & Me!cboArt
strKrit = strKrit & " and ID_StandOrt=2"



Case 3
If Not IsNull(Me!cboLager) Then strKrit = strKrit & " and ID_Lager_F = " & Me!cboLager
If Not IsNull(Me!cboHersteller) Then strKrit = strKrit & " and ID_Hersteller_F = " & Me!cboHersteller
If Not IsNull(Me!cboArt) Then strKrit = strKrit & " and ID_Art_F = " & Me!cboArt

Case Else
strKrit = ""

End Select


If Len(strKrit) Then strKrit = " where " & Mid(strKrit, 6)

    Me!lstBauteilsuche.RowSource = strSQL & strKrit
    If Me.lstBauteilsuche.ListCount = 0 Then
        MsgBox "Suchwerte nicht gefunden, der Filter wird zurückgesetzt."
        btnFilterLoeschen_Click
    Else
        Me.Requery
    End If
End Sub


btw:  Vielleicht solltest Du auch über abhängige Kombifelder nachdenken . Zudem sollte in jedem Modulkopf Option Explicit zu stehen kommen.


Viele Grüße vom Bodensee
Franz, DF6GL

Hilfestellung:  http://www.access-o-mania.de/forum/index.php?topic=6969.msg118738#msg118738

Links und Tipps:
1.   http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/
1a. http://www.tinohempel.de/info/info/datenbank/normalisierung.htm
1b. https://support.office.com/de-de/article/Grundlagen-des-Datenbankentwurfs-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5#bmterms
2.   http://www.donkarl.com
3.   https://web.archive.org/web/20201201233522/http://www.dbwiki.net/
4.   http://www.access-tutorial.de/
5.   http://www.tty1.net/smart-questions_de.htm
6.   http://access.joposol.com/accept

Last but not least:   < F1 > für Hilfe
;) Learning by doing not by spoon-feed ;)

Tipp: Find and Replace for Access

Shayol

Erstmal ein dickes Dankeschön , das du dich damit beschäftigst hast. Deinen Code habe ich eingefügt im VBA-Modul (Form_frmErfassung).  Habe auch in jedem VBA-Modul , Option Explicit hinzufügt. Hoffe das war/ist so richtig.
Zitatabhängige Kombifelder
damit werde ich mich 100% beschäftigen , danke für den weiteren Tipp.

Option Compare Database
Option Explicit


Private Sub Form_Open(Cancel As Integer)
    DoCmd.Maximize
End Sub

Private Sub Form_Current()
    Me.lstBauteilsuche = Me.ID_Bauteil
End Sub

Private Sub lstBauteilsuche_AfterUpdate()
    Me.Recordset.FindFirst "[ID_Bauteil] = " & Me.lstBauteilsuche
End Sub


Private Sub btnFilterLoeschen_Click()
    Me.cboLager = Null
    Me.cboHersteller = Null
    Me.cboArt = Null
    Me.txtTypNummer = Null
    Me.Requery
    Me.lstBauteilsuche.Requery
End Sub


Sub frm_Requery()

Dim strSQL As String, strKrit As String

strSQL = "SELECT Bauteile.ID_Bauteil, StandOrt.StandOrt, Lager.Lager, Art.Art, Hersteller.Hersteller, Bauteile.Hersteller_Nr_1, Bauteile.Symbol_Nummer, Bauteile.Hersteller_Nr_2, Bauteile.Beschreibung, Bauteile.ID_Hersteller_F2, Bauteile.ID_Lager_F, Bauteile.ID_Hersteller_F, Bauteile.ID_Art_F, Bauteile.Schrank, Bauteile.Fach, Bauteile.Ebene, Bauteile.Reihe, Lager.Pfeiler, Lager.LagerOrtBeschreibung, Bauteile.ID_StandOrt " & _
" FROM Lager INNER JOIN (Art INNER JOIN (StandOrt INNER JOIN (Hersteller INNER JOIN Bauteile ON Hersteller.ID_Hersteller = Bauteile.ID_Hersteller_F) ON (StandOrt.ID = Bauteile.[ID_StandOrt]) AND (StandOrt.ID = Bauteile.[ID_StandOrt])) ON Art.ID_Art = Bauteile.ID_Art_F) ON Lager.ID_Lager = Bauteile.ID_Lager_F "


Select Case Me!Rahmen8

Case 1
If Not IsNull(Me!cboLager) Then strKrit = strKrit & " and ID_Lager_F = " & Me!cboLager
If Not IsNull(Me!cboHersteller) Then strKrit = strKrit & " and ID_Hersteller_F = " & Me!cboHersteller
If Not IsNull(Me!cboArt) Then strKrit = strKrit & " and ID_Art_F = " & Me!cboArt
strKrit = strKrit & " and ID_StandOrt=1"

Case 2
If Not IsNull(Me!cboLager) Then strKrit = strKrit & " and ID_Lager_F = " & Me!cboLager
If Not IsNull(Me!cboHersteller) Then strKrit = strKrit & " and ID_Hersteller_F = " & Me!cboHersteller
If Not IsNull(Me!cboArt) Then strKrit = strKrit & " and ID_Art_F = " & Me!cboArt
strKrit = strKrit & " and ID_StandOrt=2"



Case 3
If Not IsNull(Me!cboLager) Then strKrit = strKrit & " and ID_Lager_F = " & Me!cboLager
If Not IsNull(Me!cboHersteller) Then strKrit = strKrit & " and ID_Hersteller_F = " & Me!cboHersteller
If Not IsNull(Me!cboArt) Then strKrit = strKrit & " and ID_Art_F = " & Me!cboArt

Case Else
strKrit = ""

End Select


If Len(strKrit) Then strKrit = " where " & Mid(strKrit, 6)

    Me!lstBauteilsuche.RowSource = strSQL & strKrit
    If Me.lstBauteilsuche.ListCount = 0 Then
        MsgBox "Suchwerte nicht gefunden, der Filter wird zurückgesetzt."
        btnFilterLoeschen_Click
    Else
        Me.Requery
    End If
End Sub



ZitatHallo,

wirf die unsäglichen Formularfeld-Verweise aus der Listenfeldabfrage heraus. Setze den SQL-String mit den entspr. Kriterien per VBA zusammen und weise den String der Eigenschaft "Rowsource" des Listenfeldes zu:

Alles was dort steht , habe ich null verstanden.  :-[




DF6GL

Hallo,

ZitatAlles was dort steht , habe ich null verstanden.

Was genau hast Du nicht verstanden?  Den Code oder den Hinweis auf die Formular-Steuerelement-Referenzen?
Viele Grüße vom Bodensee
Franz, DF6GL

Hilfestellung:  http://www.access-o-mania.de/forum/index.php?topic=6969.msg118738#msg118738

Links und Tipps:
1.   http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/
1a. http://www.tinohempel.de/info/info/datenbank/normalisierung.htm
1b. https://support.office.com/de-de/article/Grundlagen-des-Datenbankentwurfs-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5#bmterms
2.   http://www.donkarl.com
3.   https://web.archive.org/web/20201201233522/http://www.dbwiki.net/
4.   http://www.access-tutorial.de/
5.   http://www.tty1.net/smart-questions_de.htm
6.   http://access.joposol.com/accept

Last but not least:   < F1 > für Hilfe
;) Learning by doing not by spoon-feed ;)

Tipp: Find and Replace for Access

Shayol

1.wirf die unsäglichen Formularfeld-Verweise aus der Listenfeldabfrage.
2.Setze den SQL-String mit den entspr. Kriterien per VBA zusammen
3. weise den String der Eigenschaft "Rowsource" des Listenfeldes zu

Diese 3 Anweisungen die du mir gegeben hast,  habe ich nicht verstanden. Hoffe aber das ich den VBA-Code richtig eingesetzt habe?!

DF6GL

#11
Hallo,


ich denke, Du verstehst den Code nicht.  Darin habe ich die 3 Punkte umgesetzt.....

1.: In der Listenfeld-Abfrage hast Du als Kriterien (und dazu in komplexer Weise) Formular-Steuerelement-Namen  eingesetzt. Das ist unflexibel, fehlerträchtig stößt schnell an Grenzen.

2.:Das habe ich mit den entspr. Codezeilen ungesetzt.

3.: dito:  Me!lstBauteilsuche.RowSource = strSQL & strKrit

Ein bisschen VBA-Kenntnisse und ein paar Access-Grundlagen (Tabellen, Abfragen, SQL-String, etc.) sind schon Voraussetzung für die erfolgreiche  Entwicklung einer DB...
Viele Grüße vom Bodensee
Franz, DF6GL

Hilfestellung:  http://www.access-o-mania.de/forum/index.php?topic=6969.msg118738#msg118738

Links und Tipps:
1.   http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/
1a. http://www.tinohempel.de/info/info/datenbank/normalisierung.htm
1b. https://support.office.com/de-de/article/Grundlagen-des-Datenbankentwurfs-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5#bmterms
2.   http://www.donkarl.com
3.   https://web.archive.org/web/20201201233522/http://www.dbwiki.net/
4.   http://www.access-tutorial.de/
5.   http://www.tty1.net/smart-questions_de.htm
6.   http://access.joposol.com/accept

Last but not least:   < F1 > für Hilfe
;) Learning by doing not by spoon-feed ;)

Tipp: Find and Replace for Access

Shayol

Da hast du recht den Code habe ich nicht verstanden

Shayol

Neuste Vision: http://www.legion-der-finsternis.de/Lager.mdb]

1. Me!lstBauteilsuche.RowSource = strSQL & strKrit im VBA ode hinzugefügt
2. Im Listenfeld-Abfrage die ganzen Kriterien gelöscht.
3. deinen VBA-Code eingesetzt.


Trotzallem klappt nichts.

DF6GL

Viele Grüße vom Bodensee
Franz, DF6GL

Hilfestellung:  http://www.access-o-mania.de/forum/index.php?topic=6969.msg118738#msg118738

Links und Tipps:
1.   http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/
1a. http://www.tinohempel.de/info/info/datenbank/normalisierung.htm
1b. https://support.office.com/de-de/article/Grundlagen-des-Datenbankentwurfs-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5#bmterms
2.   http://www.donkarl.com
3.   https://web.archive.org/web/20201201233522/http://www.dbwiki.net/
4.   http://www.access-tutorial.de/
5.   http://www.tty1.net/smart-questions_de.htm
6.   http://access.joposol.com/accept

Last but not least:   < F1 > für Hilfe
;) Learning by doing not by spoon-feed ;)

Tipp: Find and Replace for Access