severinbuob
Goto Top

Access Datenfilter wie im Excel realisieren

Guten Tag zusammen!

Ich möchte gerne in einem Access Formular einen Datenfilter hinzufügen. Über jeder Spalte befindet sich ein Kombinationsfeld, mit den Daten der gesamten Spalte. Es gibt über jeder Spalte ein Kombinationsfeld mit den Daten der Spalten. Ziel ist es, dass wenn ich zb. den Namen eines Druckers selektiere, auch nur die Datensätze angezeigt werden, welche auch diesen Namen haben. Es ist eigentlich das selbe Prinzip wie bei Excel der Datenfilter.
Damit ihr es euch besser vorstellen könnt, habe ich zwei Screenshots gemacht:

[
eb0de1235522fd2f5871d41aa54122c2-screenshot015
Bild 1]
Datenfilter bei Excel

[
a1312c6b9f86beffb4ca5fadbefbfec0-screenshot017
Bild 2]
So sollte es dan aussehen, aber eben mit Funktion :D


Ich danke euch schon im vorraus für euere Antworten

Gruss

Severin

Content-ID: 35079

Url: https://administrator.de/contentid/35079

Ausgedruckt am: 26.11.2024 um 07:11 Uhr

AndreasHoster
AndreasHoster 29.06.2006 um 17:02:45 Uhr
Goto Top
Prinzipiell ganz einfach:

Me.Filter = "Spaltenname='" & Me![Kombinationsfeldname] & "'"
Me.FilterOn = True

Und das im "Nach Aktualisierung" Ereignis eintragen.
Allerdings ist es in Access so, das dieses Ereignis erst aufgerufen wird, wenn man aus dem Feld rausgeht, also nur auswählen und im Feld bleiben, triggert dieses Ereignis noch nicht.
Claude
Claude 30.06.2006 um 01:09:59 Uhr
Goto Top
Hallo, Hier eine Lösung mit meheren Felder, die dem AutoFilter von Excel zimmlich nahe kommt:
Function ZK_Filter()
'*****************  
Dim i As Integer
Dim CritName As String 'Mitarbeitername  
Dim CritDate As String
Dim CritProjekt As String 'Projekt  
Dim CritSelect As String 'Monatnr  
Dim CritTestSelect As String 'Minat Buchstabe  
Dim CritStatus As String 'Status  
Dim CritOrt As String 'Ort  
Dim CritStundensatz As String 'Stundensatz  
Dim DatVar As Variant, DatVarFld As Variant
Dim CritGESAMT As String
Dim Wort(5) As String, WortPos(5) As Integer
Dim WortNr As Integer
Dim AnzWort As Integer
Dim Mldg As String
'Dim MM As Variant, DD As Variant, YY As Variant  
'***  
If IsNull(Me![Filter_Name]) Then CritName = "" Else CritName = "[name]='" & Me![Filter_Name] & "'"  
If IsNull(Me![Filter_Date]) Then CritDate = "" Else CritDate = "[date]=#" & Format(Me![Filter_Date], "m\/d\/yy") & "#"  
If IsNull(Me![Filter_Projekt]) Then CritProjekt = "" Else CritProjekt = "[projekt]='" & Me![Filter_Projekt] & "'"  
If IsNull(Me![Filter_Select]) Then CritSelect = "" Else CritSelect = "[select]='" & Me![Filter_Select] & "'"  
If IsNull(Me![Filter_Test_Select]) Then CritTestSelect = "" Else CritTestSelect = "[test select]='" & Me![Filter_Test_Select] & "'"  
If IsNull(Me![Filter_Status]) Then CritStatus = "" Else CritStatus = "[status]='" & Me![Filter_Status] & "'"  
If IsNull(Me![Filter_Ort]) Then CritOrt = "" Else CritOrt = "[ort]='" & Me![Filter_Ort] & "'"  
If IsNull(Me![Filter_Stundensatz]) Then CritStundensatz = "" Else CritStundensatz = "[Stundensatz]='" & Me![Filter_Stundensatz] & "'"  
'If IsNull(Me![Filter_Wort]) Then CritWort = "" Else GoSub WortFilter  
'***  
If CritName = "" Then CritGESAMT = "" Else CritGESAMT = CritName  
If CritDate <> "" Then CritGESAMT = CritGESAMT & " AND " & CritDate  
If CritProjekt <> "" Then CritGESAMT = CritGESAMT & " AND " & CritProjekt  
If CritSelect <> "" Then CritGESAMT = CritGESAMT & " AND " & CritSelect  
If CritTestSelect <> "" Then CritGESAMT = CritGESAMT & " AND " & CritTestSelect  
If CritStatus <> "" Then CritGESAMT = CritGESAMT & " AND " & CritStatus  
If CritOrt <> "" Then CritGESAMT = CritGESAMT & " AND " & CritOrt  
If CritStundensatz <> "" Then CritGESAMT = CritGESAMT & " AND " & CritStundensatz  
If Left(CritGESAMT, 4) = " AND" Then CritGESAMT = Mid(CritGESAMT, 6)  
'***  
If CritGESAMT = "" Then  
    Me.FilterOn = False
    Me![FilterTxt] = ""  
Else
    Me.Filter = CritGESAMT
    Me.FilterOn = True
    Me![FilterTxt] = CritGESAMT
End If
Exit Function

Bitte die Lösung nicht einfach übernehmen, ich wollte nur zeigen wie man mehrere Kombi_Felder kombinieren kann. Wenn Fragen, einfach nochmal melden.

Gruss
severinbuob
severinbuob 30.06.2006 um 14:55:34 Uhr
Goto Top
Erstmals grosses Lob für diese Idee, wirklich toll. Die Suchwerte dann in einem Textfeld speichern, alles kein Problem. Aber wie kann ich es realisieren, dass nur die jenigen Datensätze angezeigt werden, welche in diesem Textfeld vorhanden sind?

Vielen Dank

Gruss Severin
Claude
Claude 30.06.2006 um 15:39:39 Uhr
Goto Top
Also das Textfeld 'Me![FilterTxt] = CritGESAMT' zeigt im Formular nur an, welcher Filter der Benutzer zusammengestellt hat. Die Arbeit macht eigentlich der Befehl:
Me.Filter = CritGESAMT
Me.FilterOn = True
Claude
Claude 30.06.2006 um 15:41:50 Uhr
Goto Top
face-wink
Wenn mir jemand erklärt (...bin halt zu doof), wie man hier ein Bild anzeigt, dann mach' ich ein Screenshot von dem entsprechendem Formular.....
Claude
Claude 03.07.2006 um 15:59:08 Uhr
Goto Top
Hallo Severin,
Der VBA-Code wird bei jedem Kombinationsfeld des Filters in der Eigenschaft "Nach Aktualisierung" hinterlegt.
Die Funktion wird im Klassenmodul des Formulars hinterlegt.
Gruss claude
Untamed
Untamed 19.09.2007 um 16:25:50 Uhr
Goto Top
Hallo Claude,

Hoffendlich liest du noch diesen Trend,
Hätte da ne bitte, vielleicht kannst du mir erklären wie und wo genau ich den Code einfügen soll.
Oder besser noch wenn du eine Beispiels db hast wo ich mir das genau angucken könnte
Wäre ne große Hilfe, ich sitze nämlich jetzt schon 2 tage und probiere genau das zu erreichen was du hier dargestellt hast.

Ich danke im Voraus und hoffe das du mir helfen kannst

Gruß

Untamed
severinbuob
severinbuob 19.09.2007 um 16:32:49 Uhr
Goto Top
Salü Untamed,

Ich bin zwar nicht claude kann dir aber bestimmt auch helfen!
Hier eine beispiel DB --> http://www.carpenox.ch/download/datenfilter.rar

Gruss
Severin
Claude
Claude 19.09.2007 um 20:35:08 Uhr
Goto Top
Hallo, Severin war schneller .... face-wink
Sollte noch Bedarf sein, einfach nochmal melden
Gruss
claude
severinbuob
severinbuob 20.09.2007 um 08:20:49 Uhr
Goto Top
gut dan werde ich die datei wider löschen ^^
schönen tag noch!
gruss
severin
Untamed
Untamed 20.09.2007 um 11:01:30 Uhr
Goto Top
HI

Leute, ich danke euch sehr für die schnelle antworten!
Ich werd mich jetzt mal daran setzen und gucken ob ich das jetzt hin kriege!
Falls ich Probleme bekomme dann meld ich mich noch mal, und falls nicht dann DANKE ich euch recht herzlich für die arbeit und zeit die ihr investiert habt!

Gruß

Untamed
Claude
Claude 20.09.2007 um 12:07:01 Uhr
Goto Top
Hallo Severin,
Kleines Missverständnis? Wieso die Datei wieder löschen?
Ich wollte nur anmerken, das du schneller warst als ich, mit dem bereitstellen einer Beispielsdatenbank. Vielen Dank auch.

Wie oben geschrieben: Wenn noch Bedarf besteht, kann ich auch nochmal eine Beispielsdatenbank bereitstellen, da ich diesen Typ von Filter schon öfters eingebaut habe.

mfG
Claude
Untamed
Untamed 20.09.2007 um 15:57:05 Uhr
Goto Top
Hallo!

Ich hab zwar gesagt falls es nicht klappt melde ich mich, und wenn doch dann nicht...
Aber ich bin so froh das es jetzt endlich funtz!
Deswegen mochte ich mich noch mal für die Hilfe bedanken!

DANKE DANKE face-smile

Gruß

Untamed