Seite 1 von 1

Textfeld bei der Eingabe auslesen und für Filtertabelle verwenden (gelöst)

Verfasst: Mo 30. Okt 2023, 18:18
von aspe
Hallo!
Ich habe ein vermutlich seltsames Anliegen beim Verwenden einer abgewandelten Filtertabelle, wie sie auch im Handbuch zu 7.2 beschrieben wurde.
Es existieren u.a.
die Filtertabelle SucheAutor mit ID und Suchbegriff,
das Textfeld im frmFilter für Suchbegriff,
die qryAutor_Suchergebnis in einem TabellenSteuerelement und dem Button zum Aktualisieren im frmMain.

Das Ganze klappt auch, allerdings ware es optimaler, wenn bei der Eingabe in das Textfeld die Suche mit jedem weiteren Buchstaben automatisch "optimiert" würde, wie es z.B. in Listenfeldern geschieht. Ein Listenfeld an dieser Stelle finde ich nicht brauchbar. Makros werden schon an anderer Stelle verwendet, so dass es kein weiteres kein Problem darstellt (außer der Programmierung),

Kennt jemand eine Lösung?

Re: Textfeld bei der Eingabe auslesen und für Filtertabelle verwenden

Verfasst: Di 31. Okt 2023, 17:24
von F3K Total
Moin,
Makros werden schon an anderer Stelle verwendet, so dass es kein weiteres kein Problem darstellt (außer der Programmierung)
Witzig, du suchst also jemanden, der dir gratis dein Programm schreibt?
Naja, viel Glück.
Ich würde dir empfehlen, das % Zeichen in den Suchbegriff der Abfrage einzubauen, siehe z.B. Videotutorial 5, dann reicht es, Teile des Suchbegriffes einzugeben.
Bsp.:

Code: Alles auswählen

SELECT "ID", "Nachname", "Vorname", "Strasse", "PLZ", "Ort" FROM "Adressen" WHERE ( LOWER ( "Nachname" ) LIKE LOWER ( '%' || (SELECT "Suchbegriff" from "SucheAutor") || '%' ) OR (SELECT "Suchbegriff" from "SucheAutor") IS NULL )
Damit findest du mit "eye" auch M"eye"r, Schl"eye"r, B"eye"r

Gruß R

Re: Textfeld bei der Eingabe auslesen und für Filtertabelle verwenden

Verfasst: Di 31. Okt 2023, 17:31
von RobertG
Wenn Du die Übernahme des Filterinhaltes bisher durch einen Button zum Aktualisieren eines Formulars erledigt hast musst Du erst einmal diese Funktion ersetzen.
Der Text aus Deinem Feld muss automatisch gespeichert werden, anschließend muss das entsprechende Formular, in dem bisher der Button ist, neu geladen werden.

Code: Alles auswählen

SUB TextFilter(oEvent AS OBJECT)
	oField = oEvent.Source.Model
	oForm = oField.Parent
	oField.Commit()
	oForm.UpdateRow()
	oForm.Parent.getByName("MainForm").Reload()
END SUB
Das geht davon aus, dass die Filter-Tabelle durch ein Formular beschrieben wird, das neben dem Formular liegt, das neu geladen werden soll. Der Name des neu zu ladenden Formular wird mit "MainForm" angenommen.
Das Makro musst Du an die Änderung des Inhaltes des Textfeldes binden. Aber: Das erzeugt leicht sehr viel Unruhe auf dem Bildschirm. Eventuell musst Du einfach den Mindestinhalt auf 2 oder auch 3 Buchstaben einstellen.

Re: Textfeld bei der Eingabe auslesen und für Filtertabelle verwenden (gelöst)

Verfasst: Do 2. Nov 2023, 22:47
von aspe
Vielen Dank für eure Vorschläge.

@FK3 Total: Nein, keine Sorge ! Ich habe es bisher alles selbst geschrieben, natürlich durch die Hilfe aus den Handbüchern von Robert und vielen weiteren Recherchen im Netz. Es läuft ja auch ohne Probleme. Ich hatte nur überlegt, ob es eine einigermaßen einfache Lösung gibt, die es noch komfortabler macht.

@ RobertG: Ich werde es jetzt erst einmal so belassen. Bei Gelegenheit und etwas mehr Zeit, probiere ich den Vorschlag gerne aus und gebe dann Feedback;

Re: Textfeld bei der Eingabe auslesen und für Filtertabelle verwenden (gelöst)

Verfasst: Fr 3. Nov 2023, 13:11
von aspe
Beim Arbeiten mit dem Suchformular habe ich entdeckt, dass die Bedienung etwas vereinfacht werden kann, indem man nach der Eingabe des Suchtextes den Tabulator nach rechts betätigt. Schon erscheint das Ergebnis der Suche und man muss nicht auf den Button OK klicken. :o :D
Vielleicht hilft es ja jemandem.