Lösung für Suchfeld in einem Formular ?

Datenbanklösungen mit AOO/LO

Moderator: Moderatoren

pvane
Beiträge: 2
Registriert: Do, 07.09.2006 12:03

Lösung für Suchfeld in einem Formular ?

Beitrag von pvane »

Nach dem ich viele, viele Foren gelesen habe und leider zu keinem Ergebnis gekommen bin, habe ich ggf. selber eine Lösung für eine Suchabfrage in einem Formular gefunden.

Ausgangssituation : Kundendatenbank mit den üblichen Feldern. :lol:

Problem : Suche über mehrere Felder bei einmaliger Eingabe. :roll:

Meine Lösung : Ich habe in der Entwurfsansicht unter jedem Feld, was in der Suche berücksichtigt werden soll, folgenden Eintrag vorgenommen : WIE :Suche. (In jeder neuen Spalte derselbe Eintrag). Natürlich dürfen die Einträge nicht in einer Reihe stehen, sondern müssen in den weiteren "Oder" Feldern immer versetzt stehen.

Klar, daß man nur Felder absuchen kann, die den gleichen Datentyp haben. Bei einer Kundendatenbank sind dies aber sowieso meist der Datentyp Text. Suchen kann man dann mit "%" als Platzhalter für beliebig viele Zeichen. %Hermann% z.B. würde alle Datensätze anzeigen in denen irgendwie das Wort Hermann vorkommt.

Ich würde mich über eure Meinungen zu dieser Idee sehr freuen. Probiert aus und postet eure Erfahrungen bzw. Verbesserungen.

Thats all folks
pvane
Das Dasein ist bunt und granatenstark !
Steffan
****
Beiträge: 125
Registriert: Mi, 21.06.2006 10:07
Wohnort: Dresden

Beitrag von Steffan »

Hallo,

ich hab das ganze folgendermaßen gelöst:

Durchsucht werden bei mir die Felder 'company1' und 'family_name'
Im Formular gibt es ein Textfeld zur Eingabe des Suchstrings.
Dem Textfeld habe ich für das Ereignis Text modifiziert ein Makro zugeordnet, das den SQL-Filter-String baut (Auszug)

Code: Alles auswählen

	
    sFilter= lcase(oFilt.Text) 'Suchtext aus Textbox
    if sFilter <>"" then
        sFilter = sFilter & "%" 
        setFiltA1= "( (LCASE(company1) LIKE '" & sFilter & "') " & _
            "OR (LCASE(family_name) LIKE '" & sFilter & "') )"
    else 
        setFiltA1= ""
    endif
Der so ermittelte SQL-Filterstring wird dann der Filter-Eigenschaft des Formulars zugewiesen.

Code: Alles auswählen

	oForm.Filter=setFiltA1
	oForm.Reload
Und schon klappt es. Jedesmal wenn der Text im Textfeld sich ändert, werden die o.g. Felder entsprechend dem eingegebenen String gefiltert und das Formular wird neu aufgebaut.

Steffan.
pvane
Beiträge: 2
Registriert: Do, 07.09.2006 12:03

Beitrag von pvane »

Hallo Steffan,

das ein Suchfeld per Makroprogrammierung möglich ist, wußte ich.
Da ich mich aber mit der Makroprogrammierung nicht auskenne, habe ich
nach einem Weg für "Otto Normalverbraucher" gesucht.

Eine Suchabfrage ohne Makro.

Vielen Dank für dein Posting.

pvane
Das Dasein ist bunt und granatenstark !
Antworten