Seite 1 von 1
Filter als Abfrage in der Tabelle
Verfasst: Mo 21. Jul 2014, 17:05
von OSEinkauf
Hallo,
vielleicht mag mir jemand helfen. Ich suche schon recht lange im Forum nach ähnlichen Problemen, habe aber leider nicht das richtige gefunden.
Eigentlich scheint mein Problem ganz einfach.
Ich möchte eine Abfrage wie ein Standardfilter erstellen per Knopfdruck ohne ständig den Filter einstellen zu müssen. Per Makro funktioniert das wohl offenbar nicht.
Vorhanden sind 2-4 Suchkriterien als ODER Funktion in einer Spalte.
zur besseren Erläuterung :
Spalte A / Spalte B
Teile / Werk
Artikel A / 1,B
Artikel B / 1,2
Artikel C / 2
Artikel D / K
Artikel E / 3
Filterkritierum z.B. Zeige mir alle Zeilen mit 1 oder K
oder zeige mir alle Zeilen mit 2 oder K
oder Zeige mit alle Zeilen mit 3 oder K oder B
Das Filterkriterium befindet sich dabei nur in einer Spalte, hier im Beispiel in Spalte B Werk.
Diese Filterung möchte ich denn jeweils hinter einem Button hinterlegen, sodass ich jedes Werk sofort per Knopfdruck anzeigen lassen kann.
Hoffentlich habe ich jetzt an alles gedacht. Wenn ich was vergessen oder unverständlich erklärt habe, bitte ich das zu entschuldigen.
Über eine Hilfe würde ich mich sehr freuen.
Danke.
OS
Re: Filter als Abfrage in der Tabelle
Verfasst: Mi 23. Jul 2014, 13:10
von OttoZ
... eine Beispieltabelle könnte mehr sagen als 181 Worte
und potentiellen Helfern den Aufwand verringern
Re: Filter als Abfrage in der Tabelle
Verfasst: Mi 23. Jul 2014, 16:18
von OSEinkauf
Hallo,
vielen Dank für die Antwort. Ich habe jetzt eine kleine Beispieldatei angefügt.
Die Filterung dazu soll durch Buttons ausgeführt werden.
Button 1 zum Beispiel Werk 1 = Filtere nach 1 oder K
Button 2 = Filtere nach 2 oder K
Button 3 = Filtere nach 3 oder K
Button 4 = Filtere nach 3
etc..
Es sind auch Filterungen mit 4 Kriterien erforderlich.
Danke
Re: Filter als Abfrage in der Tabelle
Verfasst: Do 7. Aug 2014, 08:39
von OSEinkauf
Hallo,
ich versuche mich an die Lösung des Problems selber heranzutasten, weil ich gerne weiterkommen möchte. Da mir die Kenntnisse fehlen, ist das nur ein Ausprobieren und Herumspielen.
Folgendes habe ich in einem früheren Beitrag gefunden, was vielleicht weiter helfen könnte.
Allerdings vergleiche ich damit die komplette Zelle. Ich möchte aber nur nach einer bestimmte Zahl oder Zahlenfolge filtern, die in den Zellen vorhanden sein könnte und nicht den komplette Zelleninhalt vergleichen, und dann auch nur in einer bestimmten Spalte. Ich habe mal gelesen, dass es dazu auch unterschiedliche Filteroperatoren gibt. Aber welche genau, keine Ahnung??
REM ***** BASIC *****
'Die Spalten, in denen gefiltert werden soll, im Spaltenkopf markieren, dann unter Daten/Bereich festlegen ... einen Bereich zuordnen. Hier $Tabelle1.$A$1:$C$1048576
'das Makro "S_apply_autofilter" auf dem Tabellenreiter der Tabelle1 (rechte Maustaste) dem Tabellenereignis "Inhalt geändert" zuordnen
'das Makro "S_apply_autofilter_on_Loading" unter Extras/Anpassen/Ereignisse dem Ereignis "Ansicht wurde erzeugt" zuordnen.
'ggf. hier den Namen der Tabelle (momentan Tabelle1), der Filterzelle (momentan F1) und den Spaltenindex (A=0, B=1, C=2 ... usw.)hinter ".field =" anpassen, Speichern
sub S_apply_autofilter(ocell)
if ocell.AbsoluteName = "$Tabelle1.$F$1" then 'Hier Tabelle und Steuerzelle eingeben
if ocell.Type = com.sun.star.table.CellContentType.EMPTY then
S_remove_autofilter
else
dim aFilterFields(0) as new com.sun.star.sheet.TableFilterField
with aFilterFields(0)
.field = 2 'Spalte C wird gefiltert
.Operator = com.sun.star.sheet.FilterOperator.EQUAL
.StringValue = ocell.string
end with
odatabaserange = thiscomponent.databaseranges(0)
oFilterDescriptor = odatabaserange.FilterDescriptor
oFilterDescriptor.setFilterFields(aFilterFields)
odatabaserange.refresh
endif
endif
end sub
sub S_apply_autofilter_on_Loading
ocell = thiscomponent.sheets.getbyname("Tabelle1").getcellrangebyname("F1")' Hier Tabelle und die Steuerzelle eingeben
S_apply_autofilter(ocell)
end Sub
Sub S_remove_autofilter
odatabaserange = thiscomponent.databaseranges(0)
oFilterDescriptor = odatabaserange.FilterDescriptor
oFilterDescriptor.setFilterFields(array())
odatabaserange.referredcells.Rows.Isvisible = True
odatabaserange.refresh
end sub
Wenn die Filterung so funktioniert, wäre der nächste Schritt, den Filterbefehl auf einen vordefinierten Button zu legen.
Für einen Tipp wäre ich dankbar.
Danke.
Re: Filter als Abfrage in der Tabelle
Verfasst: Do 7. Aug 2014, 13:30
von lorbass
OSEinkauf hat geschrieben:Über eine Hilfe würde ich mich sehr freuen.
Wende dich mit der Frage an den „zuständigen“ Bereich Bereich
LibreOffice Programmierung. Den Programmcode solltest du immer in die dafür vorgesehenen [code] [/code] Tags einschließen.
Gruß
lorbass
Re: Filter als Abfrage in der Tabelle
Verfasst: Do 7. Aug 2014, 16:10
von F3K Total
Hi,
habe was gebastelt. Mit Makro. Verwendet wird der Spezialfilter.
Wenn du auf die Buttons die Filterkriterien schreibst, durch Komma getrennt, ohne Leerzeichen, dann den Cursor innerhalb der zu filternden Daten platzierst, kannst Du per Buttonclick filtern. Geht momentan bis zu 6 Filterkriterien und bis Zeile 500.
Wenn du mehr Buttons brauchst, einfach kopieren und die Beschriftung anpassen.
Gruß R