Seite 1 von 1

Re: Formular, Filter usw.

Verfasst: Fr, 05.02.2010 12:42
von eBayer
Hallo, vielleicht hilft Dir das:
1. Eingabe in Eingabefeld
2. PushButton drücken, der nach dem Eingabefeld filtert

Dafür brauchst Du ein Makro, welches den Filter setzt und ggf. eines, welches den Filter aufhebt.
Den PushButton verbindest Du mit dem Makro und fertig ist der Filter.

Gruß eBayer

Sub FilterAn ' Filter für Name anschalten
Dim sFilter
Dim oForm As Object
oForm = ThisComponent.DrawPage.Forms.getByName("Form_Adressen")
sFilter = oForm.getByName("Eingabefeld").text
oForm.Filter= "Name >= " + sFilter ' Name ist ein Feld in Deiner Tabelle des aktuellen Formulars
oForm.reload ' Formular aktualisieren
End Sub

Sub FilterAus ' Filter für das Formular ausschalten
Dim oForm As Object
oForm = ThisComponent.DrawPage.Forms.getByName("Form_Adressen")
oForm.Filter="" ' Filter leeren
oForm.reload ' Formular aktualisieren
End Sub

Re: Formular, Filter usw.

Verfasst: Do, 19.07.2012 17:07
von Gundo
Hallo,

Wäre vielleicht jemand so freundlich das Makro anzupassen.

1. Meine Suchfeld hat die Bezeichnung "txtSuchfeld".
2. Mein Formular hat die Bezeichnung "Kundenstamm"
3. Die Tabelle hat das Feld "Nachname".

Wo muss ich denn das Suchfeld eintragen ?

Code: Alles auswählen

Sub FilterAn ' Filter für Name anschalten
Dim sFilter
Dim oForm As Object
oForm = ThisComponent.DrawPage.Forms.getByName("Form_Adressen")
sFilter = oForm.getByName("Eingabefeld").text
oForm.Filter= "Nachname >= " + sFilter ' Name ist ein Feld in Deiner Tabelle des aktuellen Formulars
oForm.reload ' Formular aktualisieren
End Sub

Sub FilterAus ' Filter für das Formular ausschalten
Dim oForm As Object
oForm = ThisComponent.DrawPage.Forms.getByName("Form_Adressen")
oForm.Filter="" ' Filter leeren
oForm.reload ' Formular aktualisieren
End Sub

Gruß Gundo

Re: Formular, Filter usw.

Verfasst: Sa, 21.07.2012 09:29
von F3K Total
Hallo Gundo,
besser wäre es, wenn du eine verfremdete Version der DB hochlädst. Der "interne" Name des Formulares fehlt bei deinen Angaben.
Gruß R

Re: Formular, Filter usw.

Verfasst: Sa, 21.07.2012 12:15
von Gundo
Hallo F3K Total,

Ja mach ich hiermit.

Im Feld "txtSuche" soll der Suchbegriff eingetragen werden. Es soll das Tabellenfeld "Nachname" gefiltert werden. Kann man die Sortierreihenfolge variabel gestalten ?

Gruß Gundo

Re: Formular, Filter usw.

Verfasst: Sa, 21.07.2012 12:37
von F3K Total
Jo, und das war gut so:
1.) Dein Formular heißt im Formularnavigator "MainForm"
2.) Das Textfeld zur Eingabe des Suchstrings heißt "txtSuche"
3.) die Zeile

Code: Alles auswählen

oForm.Filter= "Nachname >= " + sFilter
muss so geändert werden:

Code: Alles auswählen

oForm.Filter = "Nachname >= '" + sFilter +"'"
weil bei Eingabe eines Strings einfache Gänsefüßchen oben den String umschliessen müssen.
4.) Das Makro FilterAn habe ich der Schaltfläche AN unter dem Ereignis Aktion ausführen zugeordnet
5.) Das Makro FilterAus habe ich der Schaltfläche AUS unter dem Ereignis Aktion ausführen zugeordnet

Die Makros müssen daher so aussehen:

Code: Alles auswählen

    Sub FilterAn ' Filter für Name anschalten
    Dim sFilter
    Dim oForm As Object
    oForm = ThisComponent.DrawPage.Forms.getByName("MainForm")
    sFilter = oForm.getByName("txtSuche").text
    oForm.Filter = "Nachname >= '" + sFilter +"'" ' Name ist ein Feld in Deiner Tabelle des aktuellen Formulars
    oForm.reload ' Formular aktualisieren
    End Sub

    Sub FilterAus ' Filter für das Formular ausschalten
    Dim oForm As Object
    oForm = ThisComponent.DrawPage.Forms.getByName("MainForm")
    oForm.Filter="" ' Filter leeren
    oForm.reload ' Formular aktualisieren
    End Sub
Nun läuft es.

Die Sortierreihenfolge kannst Du in der Leiste Formularnavigation einstellen.
Viel Erfolg damit

Gruß R

Re: Formular, Filter usw.

Verfasst: Sa, 21.07.2012 13:00
von Gundo
KLASSE !!!

Vielen Dank.

Gruß Gundo

Re: Formular, Filter usw.

Verfasst: Sa, 21.07.2012 13:32
von Gundo
Muß mich noch mal melden.

F3K Total, gib mal bitte "Mü" ein, und clicke auf "AN". Bei mir werden auch die Nachnamen "Sch*" und "Naumann" angezeigt.

Kannst du das mal testen ?

Gruß Gundo

Re: Formular, Filter usw.

Verfasst: Sa, 21.07.2012 16:01
von RobertG
Hallo Gundo,
Gundo hat geschrieben:... gib mal bitte "Mü" ein, und clicke auf "AN". Bei mir werden auch die Nachnamen "Sch*" und "Naumann" angezeigt.
Das klingt doch ganz nach der Vorgabe, die irgendwann in dem Thread auftauchte. Dort steht
"Nachname >= " + sFilter
>=: Also vom Reihenfolge, startend ab "Mü" ... M, N, O ...
Vielleicht suchst Du nur alle Nachnamen mit "Mü" beginnend?
"Nachname LIKE "+sFilter+"%"
Ich weiß nur nicht, wie es hier mit den Hochkommata aussehen muss. Vielleicht
"Nachname LIKE '"+sFilter+"%'"

Gruß

Robert

Re: Formular, Filter usw.

Verfasst: Sa, 21.07.2012 18:01
von Gundo
Hallo Robert,

Ja, ich habe mich warscheinlich wieder mal dusselig ausgedrückt. Sorry dafür.
"Nachname LIKE '"+sFilter+"%'"

... zwischen Groß- und Kleinschreibung soll aber nicht unterschieden werden.

Gruß Gundo

Re: Formular, Filter usw.

Verfasst: Sa, 21.07.2012 18:21
von RobertG
Hallo Gundo,
"Nachname LIKE '"+sFilter+"%'"

... zwischen Groß- und Kleinschreibung soll aber nicht unterschieden werden.
Vielleicht
"UCASE(Nachname) LIKE UCASE("+sFilter+")||%"
Das würde zumindest beide Werte (von Nachname und Filterstring) in einer HSQLDB auf Kleinschreibung setzen, so dass keine Unterscheidung erforderlich ist. Wieder geht jetzt natürlich das Testen los, wo eventuell die Hochkommata hingehören.

Gruß

Robert

Re: Formular, Filter usw.

Verfasst: Sa, 21.07.2012 18:39
von Gundo
So scheint es zu klappen:

Code: Alles auswählen

 "UCASE(Nachname) LIKE UCASE('"+sFilter+"%')" 

Re: Formular, Filter usw.

Verfasst: Sa, 21.07.2012 18:45
von F3K Total
Jo,
so geht es.

Gruß R

Edit: kleiner Tipp am Rande: Wenn Du das Makro FilterAn an das Ereignis Text modifiziert des Suchfeldes txtSuche hängst, kannst Du auf die Schaltflächen AN/AUS verzichten.

Re: Formular, Filter usw.

Verfasst: Sa, 21.07.2012 19:54
von RobertG
Hallo R,
F3K Total hat geschrieben: Edit: kleiner Tipp am Rande: Wenn Du das Makro FilterAn an das Ereignis Text modifiziert des Suchfeldes txtSuche hängst, kannst Du auf die Schaltflächen AN/AUS verzichten.
Bist Du Dir da sicher? "Text modifiziert" reagiert dann nach jeder Tastatireingabe, d.h. der Filter läuft mit jedem Buchstaben neu an. Wenn das nicht gewollt ist, dann reicht auch ein Focusverlust.

Gruß

Robert

Re: Formular, Filter usw.

Verfasst: Sa, 21.07.2012 20:00
von F3K Total
Hallo Robert,
genau, das wollte ich bezwecken.
Während des Eintippens des Filters reduziert sich gleichzeitig die Liste.
Das kann natürlich bei großen Datenmengen stören, bei überschaubarer Anzahl ist es aber hilfreich, weil man aufhören kann, wenn der/die gewünschte/n Datensatz/sätze sichtbar wird/werden.
Gruß R

[Gelöst] Formular, Filter usw.

Verfasst: So, 22.07.2012 09:50
von Gundo
Danke für eure Hilfe.

Gruß Gundo