MS-Office-Forum
Google
   

Zurück   MS-Office-Forum > Microsoft Access & Datenbanken > Microsoft Access
Registrieren Forum Hilfe Alle Foren als gelesen markieren

Banner und Co.

Antworten
Ads Der Renner, 11 Entwicklertools für Access, Tipps & Trick und offene Datenbanken zum einzigartigen Preis.
Themen-Optionen Ansicht
Alt 07.01.2017, 11:33   #1
Mike Forwell
Neuer Benutzer
Neuer Benutzer
Standard Acc2010 - Filtern durch mehrere Kombinationsfelder

Hallo ich mal wieder,

Ich möchte im Formular durch mehrere Kombinationsfelder eine Filterung von
Datensätzen durchführen.

Also ich habe eine:

Tabelle = tbl_Bestellungen
Abfrage = abf_Bestellungen
Formular = frm_Bestellungen_ubersicht

----

Das Formular hat als Datensatzquelle die Abfrage "abf_Bestellungen"
und die Standardansicht ist als Endlosformular.

Im Detailbereich des Formulars befinden sich 25 Felder.

Jetzt möchte von den 25 Feldern 13 Felder filtern, die allerdings über separatte Kombinationfelder gesteuert werden (also 13 Kombinationfelder).

Ich bin wie folgt vorgegangen:
1. Kombinationfelder ( 13 Stück) ins Formular ohne Assisten eingefügt.
2. Je Kombinationfeld ein Ereignes Nach Aktualisierung eingefügt
"Me.Requery"
3. Je Kombinationfeld einen Datensatzherkunft bestimmt
Beipiel:
Code:

SELECT DISTINCT abf_Bestellungen.Artikel FROM abf_Bestellungen;
und so weiter.

4. in der Abfrage je Feld ein Kriterium folgendes eingeben.
Beipiel:
Code:

Wie "*" & [Formulare]![frm_Bestellungen_ubersicht]![Kombinationfeld1] & "*"
dies habe ich bis zum 4 Kombinationsfeld druchgezogen und getestet und Funktioniert, Also öffne Formular und alle Datensätze sichtbar und wenn ich einer der 4 Kombinationfelder wähle, filtert er mir auch alles.

ABER
wenn ich ein das 5te Kombinationsfeld anlege und dann Teste zeigt er mir nur einen Datensatz an!

Was mache ich Falsch???

__________________

Gruß Mike

Ich kann zwar Zaubern, aber nicht alles.
Mike Forwell ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 07.01.2017, 11:45   #2
Maxel
MOF Guru
MOF Guru
Standard

Vielleicht liefert die Bedingung des 5. Kombifeldes korrekt nur einen Datensatz? Es hat den Anschein, als ob die Abfrage die Bedingungen 1 bis 5 kombiniert - ist das so gewollt?

Ich würde die Abfrage ohne Formularbezug gestalten und jedem Kombifeld im Ereignis Nach Aktualisierung eine Prozedur zuordnen - idealerweise ausgelagert in eine Public Sub oder Funktion (mit Parameterübergabe).

__________________

Viele Grüße von Maxel

Nie aufhören anzufangen,
nie anfangen aufzuhören!

Geändert von Maxel (07.01.2017 um 11:49 Uhr).
Maxel ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 07.01.2017, 12:39   #3
Mike Forwell
Threadstarter Threadstarter
Neuer Benutzer
Neuer Benutzer
Standard

Hallo Maxel,

das würde ich gerne Testen, allerding keine Ahnung wie es ausehen soll.

Wenn ich dich richtig verstehe.

1. die Kombinationfelder 1 bis 5 bleiben werstmal so bestehen.
2. bei der Abfrage nehme ich die Wie-Funktionen wieder alle raus.
3. bei den Kombinationsfelder muss ich in den Ereignis "Nach Aktualiserung" noch was ergänzen, aktuell sieht dieser wir folgt aus.

Code:

Private Sub Kombinationsfeld1_AfterUpdate()
    Me.Requery
End Sub
was muss ich noch einfügen?

Würde mich freuen wenn du mir helfen könntest.

__________________

Gruß Mike

Ich kann zwar Zaubern, aber nicht alles.
Mike Forwell ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 07.01.2017, 13:00   #4
Maxel
MOF Guru
MOF Guru
Standard

Code:

Private Sub Kombinationsfeld1_AfterUpdate()
    Me.Requery
End Sub
Dieser Code müsste testweise so verändert werden:
Code:

Private Sub Kombinationsfeld1_AfterUpdate()
    Me.Filter = "Feld1 Like '*" & Kombinationsfeld1 & "*'"
    Me.FilterOn = True
End Sub
So ist analog auch mit den weiteren Kombinationsfeldern zu verfahren (Namen anpassen!).

Diese beiden Code-Zeilen kann man dann für alle Kombinationsfelder durch einen Funktionsnamen ersetzen. Diese Funktion übernimmt das Filtern.

Dabei sind die Namen des Kombinationsfeldes und des zu filterndes Feldes (ggf. noch des Formulars) als Parameter zu übergeben.

Oder Du wählst diese beiden Namen so geschickt, dass sie verallgemeinert werden können. Beispiel: Feldname = "Vorname", Name des Kombinationsfeldes = "cboVorname". Dann bedarf es keiner Parameterübergabe, weil Du in der Funktion per AktivControl auf diese Namen zugreifen kannst.

__________________

Viele Grüße von Maxel

Nie aufhören anzufangen,
nie anfangen aufzuhören!

Geändert von Maxel (07.01.2017 um 13:02 Uhr).
Maxel ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 07.01.2017, 14:03   #5
Mike Forwell
Threadstarter Threadstarter
Neuer Benutzer
Neuer Benutzer
Standard

Hallo Maxel,

es schein besser zu Funktionieren, aber das nächste Problem ist.

Kombifeld1 = Datum
Kombifeld2 = Mitarbeiter
Kombifeld3 = Artikelnummer

wen ich in Kombifeld1 ein Datum Filter zeigt er mir auch diese Datensätze an,
wenn ich jetzt aber noch die Mitarbeiter (Kombifeld2) die mit dem Datum (Kombifeld1) filtern möchte findet kein Filter oder selection statt.

Warum???

__________________

Gruß Mike

Ich kann zwar Zaubern, aber nicht alles.
Mike Forwell ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 07.01.2017, 14:14   #6
Mike Forwell
Threadstarter Threadstarter
Neuer Benutzer
Neuer Benutzer
Standard

Hallo Maxel,

benötige ich überhaupt noch die Abfrage oder kann ich das Formular nicht direkt mit der Tabelle verbinden und das Prozedere wie von dir beschrieben durchführen?

__________________

Gruß Mike

Ich kann zwar Zaubern, aber nicht alles.
Mike Forwell ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 07.01.2017, 14:15   #7
rainer176
MOF Profi
MOF Profi
Standard

Ich habe dir mal eine kleine MusterDB angefügt. Mit etwas Anpassung wäre es das.
Angehängte Dateien
Dateityp: zip Formularfilter.zip (23,7 KB, 4x aufgerufen)
rainer176 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 07.01.2017, 14:22   #8
Ohrkester
MOF Koryphäe
MOF Koryphäe
Standard

Servus Mike Forwell,
mir scheint, dass Du, ohne es zu bemerken, ein komplettes und komplexes Suchformular aufbauen willst, welches auf Grund vieler Sucheingaben in verschiedenen Datenfeldern Ergebnisse zeigen soll.
Hier gibt es eine sehr interessante Komplettlösung für null Euro.
http://www.ms-office-forum.net/forum...d.php?t=337594
siehe in #14
Bitsqueezer Suchformular V2_8
Ohrkester ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 08.01.2017, 09:57   #9
Mike Forwell
Threadstarter Threadstarter
Neuer Benutzer
Neuer Benutzer
Standard

Hallo Reiner,

supper es scheint das dies genau das ist was ich benötige,

Code:

Sub Filtern()

 Dim strFilter As String
    strFilter = IIf(IsNull(AuswahlText) Or IsEmpty(AuswahlText) Or Me!AuswahlText = " Alle", "true", "[Texte] like '" & AuswahlText & "'") 'Textfeld
    strFilter = strFilter & IIf(IsNull(AuswahlZahl) Or IsEmpty(AuswahlZahl), "true", " And [Zahlen] > " & AuswahlZahl)  'nummerisches Feld
??? 'AuswahlNr Feld
    'Datum von bis
    strFilter = strFilter & IIf(IsNull(Datum1) Or IsEmpty(Datum1), "", " And [Datumswerte] >= " & Format(Me!Datum1, "#yyyy-mm-dd#")) 'Datumsfeld
    strFilter = strFilter & IIf(IsNull(Datum2) Or IsEmpty(Datum2), "", " And [Datumswerte] <= " & Format(Me!Datum2, "#yyyy-mm-dd#"))
    
    
    
    DoCmd.ApplyFilter , strFilter



Exit_Formularfilter_Click:
    Exit Sub

Err_Formularfilter_Click:
    MsgBox Err.Description
    Resume Exit_Formularfilter_Click
um es 100% zu verstehen benötige ich nur nach die Ergänzung für ein 3tes Auswahlfedt "AuswahlNr", wenn ich diese noch hätte kann ich mir den rest zusammen basteln.

Gute Arbeit

__________________

Gruß Mike

Ich kann zwar Zaubern, aber nicht alles.
Mike Forwell ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 08.01.2017, 18:24   #10
rainer176
MOF Profi
MOF Profi
Standard

So wie nachstehend AuswahlZahl1 usw reinkopieren nur jeweils darauf achten ob numerisch oder Text oder Datum.

Sub Filtern()

Dim strFilter As String
strFilter = IIf(IsNull(AuswahlText) Or IsEmpty(AuswahlText) Or Me!AuswahlText = " Alle", "true", "[Texte] like '" & AuswahlText & "'") 'Textfeld
strFilter = strFilter & IIf(IsNull(AuswahlZahl) Or IsEmpty(AuswahlZahl), "true", " And [Zahlen] > " & AuswahlZahl) 'nummerisches Feld
strFilter = strFilter & IIf(IsNull(AuswahlZahl1) Or IsEmpty(AuswahlZahl1), "true", " And [Zahlen1] > " & AuswahlZahl1) 'nummerisches Feld
'Datum von bis
strFilter = strFilter & IIf(IsNull(Datum1) Or IsEmpty(Datum1), "", " And [Datumswerte] >= " & Format(Me!Datum1, "#yyyy-mm-dd#")) 'Datumsfeld
strFilter = strFilter & IIf(IsNull(Datum2) Or IsEmpty(Datum2), "", " And [Datumswerte] <= " & Format(Me!Datum2, "#yyyy-mm-dd#"))

DoCmd.ApplyFilter , strFilter

Exit Sub
rainer176 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 09.01.2017, 00:14   #11
Mike Forwell
Threadstarter Threadstarter
Neuer Benutzer
Neuer Benutzer
Standard

Hallo Reiner,

hast du es mal selber getestet? bei mir kommt das gewünschte ergebnis nicht raus.

__________________

Gruß Mike

Ich kann zwar Zaubern, aber nicht alles.
Mike Forwell ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 09.01.2017, 07:29   #12
Lanz Rudolf
MOF Guru
MOF Guru
Standard

Hallo
hier eine Muster MDB
https://dl.dropboxusercontent.com/u/...erSort2003.zip
öffne z.b. Formular: FrmELFDH (FILTERIERUNG Mit (in) Datenherkunft)
oder FrmELFFF (FILTERIERUNG mit Formular-Filter)

im weiteren Lies einmal in meiner Doc s. Fusszeile unten rechts
Seite 70-73
5.3.13 Where-Bedingung mit BuildCriteria erstellen
und evtl. Seiten: 295
10.19.26 Kriterien für Datum Vergleich (Filter) mit BuildCriteria erstellen

__________________


Gruss
Ruedi

WICHTIG Hilfe findet man auch hier:
http://www.donkarl.com/ ;http://www.yaccess.de/ ; und natürlich MS Office Forum Ask Dr. Mof http://www.ms-office-wissen.de/askdrmof/index.php;
Umgang mit NULL ; hier downloaden
Datenrettung;http://www.access-rettung.de/info.htmMeine Doc;Meine Doc

Geändert von Lanz Rudolf (09.01.2017 um 07:37 Uhr).
Lanz Rudolf ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 09.01.2017, 11:00   #13
rainer176
MOF Profi
MOF Profi
Standard

Hallo Mike, ich weiss jetzt natürlich nicht was bei Dir nicht funktioniert. Wenn du möchtest kannst du gerne mal eine gezipte Musterdatenbank einstellen und ich schau mir das mal an.
Gruß Rainer
rainer176 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 09.01.2017, 19:41   #14
Lanz Rudolf
MOF Guru
MOF Guru
Standard

Hallo Reiner
Hast du die Zip-Datei runtergeladen
und die Muster MDB angeschaut
und die Seiten in meiner Doc gelesen ?

__________________


Gruss
Ruedi

WICHTIG Hilfe findet man auch hier:
http://www.donkarl.com/ ;http://www.yaccess.de/ ; und natürlich MS Office Forum Ask Dr. Mof http://www.ms-office-wissen.de/askdrmof/index.php;
Umgang mit NULL ; hier downloaden
Datenrettung;http://www.access-rettung.de/info.htmMeine Doc;Meine Doc
Lanz Rudolf ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 09.01.2017, 19:59   #15
Josef P.
MOF Guru
MOF Guru
Standard

Hallo!


Ein Tipp zur Fehlersuche:
Folgender Code wird nicht z. B. funktionieren, wenn "AuswahlZahl" oder "AuswahlZahl1" leer sind. Warum er nicht funktioniert, wirst du vielleicht erkennen, wenn du den erzeugten SQL-Ausdruck ansiehst.
Code:

Dim strFilter As String
strFilter = IIf(IsNull(AuswahlText) Or IsEmpty(AuswahlText) Or Me!AuswahlText = " Alle", "true", "[Texte] like '" & AuswahlText & "'") 'Textfeld
strFilter = strFilter & IIf(IsNull(AuswahlZahl) Or IsEmpty(AuswahlZahl), "true", " And [Zahlen] > " & AuswahlZahl) 'nummerisches Feld
strFilter = strFilter & IIf(IsNull(AuswahlZahl1) Or IsEmpty(AuswahlZahl1), "true", " And [Zahlen1] > " & AuswahlZahl1) 'nummerisches Feld
'Datum von bis
strFilter = strFilter & IIf(IsNull(Datum1) Or IsEmpty(Datum1), "", " And [Datumswerte] >= " & Format(Me!Datum1, "#yyyy-mm-dd#")) 'Datumsfeld
strFilter = strFilter & IIf(IsNull(Datum2) Or IsEmpty(Datum2), "", " And [Datumswerte] <= " & Format(Me!Datum2, "#yyyy-mm-dd#"))

debug.Print strFilter
Tipp für die Suche: Was fällt dir bei True True and [Zahlen1] > 123 ... auf?


BTW:
@Rainer: Wann ist in Access ein Steuerelementinhalt "Empty"? Meiner Meinung nach ist die IsEmpty-Prüfung nicht notwendig.
(Eine nicht initialisierte Variable im VBA-Code würde ich generell vermeiden.)

mfg
Josef

Geändert von Josef P. (09.01.2017 um 20:13 Uhr).
Josef P. ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Ads
Antworten


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Besucher: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge anzufügen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

vB Code ist An.
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist An.
Gehe zu


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:03 Uhr.


Partner und Co.
Access-Paradies -Alles rund um die Datenbank Microsoft Access -Code -Programme-Tools -Tipps   Kostenlose Tipps & Tricks, Downloads und Programme   www.kulpa-online.com - Tipps - Tricks - Tutorials - Meinungen - Downloads uvm...   vb@rchiv · Willkommen in der Welt der VB Programmierung   Access-Garhammer - Hier finden Sie jede Menge Beispiel-Datenbanken zu Access und mehr ...   mcseboard.de   Die Top Seite für Excel-VBA-Makros uvm.

Powered by: vBulletin Version 3.6.2 (Deutsch)
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.

Copyright ©2000-2010 MS-Office-Forum. Alle Rechte vorbehalten.
Copyright ©Design: Manuela Kulpa ©Rechte: Günther Kramer
Eine Verwendung der Inhalte in anderen Publikationen, auch auszugsweise,
ist ohne ausdrückliche Zustimmung der Autoren nicht gestattet.
Beachten Sie bitte auch unsere Nutzungsbedingungen.