Formular, Filter usw.

Datenbanklösungen mit OOo

Moderator: Moderatoren

Formular, Filter usw.

Beitragvon mybyte » Fr, 05.02.2010 11:36

Hallöchen!

Ich bin mir relativ sicher, dass das Thema öfters mal behandelt wird, allerdings scheine ich kein Händchen für die richtigen Stichworte beim suchen zu haben.

Ich habe einige Tabellen in SQL Datenbanken liegen, in denen ich bequem suchen möchte. Wie stell ich es an, eine Form in Base zu basteln, die mir Anhang eines Eingabefelds eine Tabelle filtert und anzeigt? Sprich ich möchte nach jeder Änderung des Eingabefeldes eine Query auf der Tabelle laufen lassen, die dann eine Spalte der Tabelle mit dem Feldinhalt vergleicht. Das Resultat soll dann in einer Tabelle angezeigt werden.

Ich wär für jeden Link auf ein halbwegs konkretes Tutorial sehr dankbar ;)
mybyte
 

Re: Formular, Filter usw.

Beitragvon eBayer » Fr, 05.02.2010 12:42

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
Intel(R) Core(TM)2 Quad CPU Q8200 @ 2.33GHz mit 4 GB Memory (3,2 GB aktiv)
Vista Home Premium 32 Bit
openOffice 3.1.1 mit Sun Report Builder 1.1.0 und MySql 5.1
Hauptinteresse ooBase seit 12.2008
eBayer
******
 
Beiträge: 556
Registriert: Do, 04.12.2008 14:33
Wohnort: Augsburg

Re: Formular, Filter usw.

Beitragvon Gundo » Do, 19.07.2012 16:07

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
Gundo
 
Beiträge: 7
Registriert: Do, 05.07.2012 12:33

Re: Formular, Filter usw.

Beitragvon F3K Total » Sa, 21.07.2012 08:29

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
F3K Total
********
 
Beiträge: 2368
Registriert: Mo, 28.02.2011 17:49

Re: Formular, Filter usw.

Beitragvon Gundo » Sa, 21.07.2012 11:15

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
Dateianhänge
Kundenverwaltung.odb
(58.48 KiB) 32-mal heruntergeladen
Gundo
 
Beiträge: 7
Registriert: Do, 05.07.2012 12:33

Re: Formular, Filter usw.

Beitragvon F3K Total » Sa, 21.07.2012 11:37

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
Dateianhänge
Kundenverwaltung_filtern.odb
(58.82 KiB) 46-mal heruntergeladen
F3K Total
********
 
Beiträge: 2368
Registriert: Mo, 28.02.2011 17:49

Re: Formular, Filter usw.

Beitragvon Gundo » Sa, 21.07.2012 12:00

KLASSE !!!

Vielen Dank.

Gruß Gundo
Gundo
 
Beiträge: 7
Registriert: Do, 05.07.2012 12:33

Re: Formular, Filter usw.

Beitragvon Gundo » Sa, 21.07.2012 12:32

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
Gundo
 
Beiträge: 7
Registriert: Do, 05.07.2012 12:33

Re: Formular, Filter usw.

Beitragvon RobertG » Sa, 21.07.2012 15:01

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
RobertG
*******
 
Beiträge: 1095
Registriert: Fr, 13.04.2012 18:28

Re: Formular, Filter usw.

Beitragvon Gundo » Sa, 21.07.2012 17:01

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
Gundo
 
Beiträge: 7
Registriert: Do, 05.07.2012 12:33

Re: Formular, Filter usw.

Beitragvon RobertG » Sa, 21.07.2012 17:21

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
RobertG
*******
 
Beiträge: 1095
Registriert: Fr, 13.04.2012 18:28

Re: Formular, Filter usw.

Beitragvon Gundo » Sa, 21.07.2012 17:39

So scheint es zu klappen:

Code: Alles auswählen
 "UCASE(Nachname) LIKE UCASE('"+sFilter+"%')"
Gundo
 
Beiträge: 7
Registriert: Do, 05.07.2012 12:33

Re: Formular, Filter usw.

Beitragvon F3K Total » Sa, 21.07.2012 17:45

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.
F3K Total
********
 
Beiträge: 2368
Registriert: Mo, 28.02.2011 17:49

Re: Formular, Filter usw.

Beitragvon RobertG » Sa, 21.07.2012 18:54

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
RobertG
*******
 
Beiträge: 1095
Registriert: Fr, 13.04.2012 18:28

Re: Formular, Filter usw.

Beitragvon F3K Total » Sa, 21.07.2012 19:00

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
F3K Total
********
 
Beiträge: 2368
Registriert: Mo, 28.02.2011 17:49

Nächste

Zurück zu OOo Base / SQL

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 6 Gäste