🙏 Helfen Sie jetzt mit, unser LibreOffice Forum zu erhalten! 🙏
Mit Ihrer Spende sichern Sie den Fortbestand, den Ausbau und die laufenden Kosten dieses Forums. 🌱

🍀 Jeder Beitrag zählt – vielen Dank für Ihre Unterstützung!🍀

❤️ DANKE >> << DANKE ❤️

>> Dank Ihrer Unterstützung -> Keine Werbung für alle registrierten LibreOffice-Forum User! <<
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗

(Solved) Suche mit Eingabe in einer Textbox?

Base ermöglicht es Ihnen, Ihre Daten in einer Datenbank direkt mit LibreOffice zu bearbeiten.
Antworten
Libremiki
Beiträge: 49
Registriert: Fr 14. Apr 2017, 11:03

(Solved) Suche mit Eingabe in einer Textbox?

Beitrag von Libremiki » Fr 31. Jan 2020, 10:48

Eigentlich ein einfaches Problem.
Ich möchte in einer Textbox den Namen eines Artikels oder einen Teil davon eingeben. Im Table-Control sollen dann alle zutreffenden Artikel angezeigt werden. So wie in dem angefügten Screenshot.
Die Artikel sind in der Tabelle "Artikel" gespeichert. Gesucht werden soll im Feld "Artikelname".

Wie kann ich das ohne Makro lösen?
Dateianhänge
Screenshot from 2020-01-31 17-46-07.png
Screenshot from 2020-01-31 17-46-07.png (18.57 KiB) 3712 mal betrachtet
Zuletzt geändert von Libremiki am Mo 3. Feb 2020, 09:01, insgesamt 1-mal geändert.

RobertG
* LO-Experte *
Beiträge: 2884
Registriert: Sa 19. Mai 2012, 17:37
Kontaktdaten:

Re: Suche mit Eingabe in einer Textbox?

Beitrag von RobertG » Fr 31. Jan 2020, 12:42

Hallo Libremiki,

Du brauchst eine Tabelle zum Filtern/Suchen. Diese Tabelle muss nur einen Datensatz speichern. Deshalb erstelle ich die immer mit einem Ja/Nein-Feld als Primärschlüsselfeld, starte die Tabelle einmal und setze den Primärschlüssel für den ersten Datensatz auf "Ja" (TRUE). Die Tabelle muss außerdem natürlich ein Feld enthalten, das den Suchbegriff speichern kann, bei Dir also 'SACH'.

Diese so erstellte Tabelle wird ein einem Formular beschreiben, das nur das eine Feld enthält. Das Formular ist so eingestellt, dass immer nur der Datensatz erscheint, der den Primärschlüssel auf TRUE stehen hat. Nur dieser Datensatz darf geändert werden.

Das Tabellenkontrollfeld, das in Deinem Formular weiter unten steht, muss in einem zweiten Formular liegen. Du öffnest am besten den Formularnavigator und erstellst dort neben dem Filterformular ein zweites Formular für die Tabelle.

Der Inhalt des zweiten Formulars wird über eine Abfrage gespeist:

Code: Alles auswählen

SELECT * FROM "Tabelle" 
WHERE LOWER("Artikel Name") LIKE '%'||(SELECT LOWER("Suchbegriff") FROM "Filter" WHERE "ID" = TRUE)||'%'
In dem zweiten Formular wird noch ein Button positioniert, der das Formular aktualisieren soll. Dieser Button wird am besten direkt neben das Eingabefeld für den Begriff gesetzt. Wechselst Du von der Sucheingabe auf diesen Button, so wird zuerst der Suchbegriff gespeichert und dann das andere Formular aktualisiert.

Willst Du alle Datensätze angezeigt bekommen, wenn kein Suchbegriff eingegeben wurde, so musst Du mit COALESCE die LIKE-Bedingung erweitern:

Code: Alles auswählen

SELECT * FROM "Tabelle" 
WHERE LOWER("Artikel Name") LIKE COALESCE('%'||(SELECT LOWER("Suchebegriff") FROM "Filter" WHERE "ID" = TRUE)||'%',LOWER("Artikel Name")) 
Steht auch alles im Base-Handbuch beschrieben.

Gruß

Robert
https://de.libreoffice.org/get-help/documentation/
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare

Libremiki
Beiträge: 49
Registriert: Fr 14. Apr 2017, 11:03

Re: Suche mit Eingabe in einer Textbox?

Beitrag von Libremiki » Fr 31. Jan 2020, 13:35

Das nenne ich eine gute Anleitung! Danke. Das Base-Handbuch hatte ich zwar gelesen aber nicht verstanden.

Stand ist jetzt dass mein Eintrag im Textfeld in die Filter Tabelle geschrieben wird, der Button funktioniert. Nur wird im Tabellenkontrollfeld noch nichts angezeigt weil -

es noch eine Fehlermeldung im SQL Eintrag gibt. Muss ich noch herausfinden, bin aber zuversichtlich.

RobertG
* LO-Experte *
Beiträge: 2884
Registriert: Sa 19. Mai 2012, 17:37
Kontaktdaten:

Re: Suche mit Eingabe in einer Textbox?

Beitrag von RobertG » Fr 31. Jan 2020, 15:28

Hallo Libremiki,

wenn Du das Base-Handbuch bei dieser Fragestellung nicht verstanden hast wären mir konkrete Rückmeldungen lieb. Dann könnte ich das entsprechend verbessern.

Gruß

Robert
https://de.libreoffice.org/get-help/documentation/
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare

Libremiki
Beiträge: 49
Registriert: Fr 14. Apr 2017, 11:03

Re: Suche mit Eingabe in einer Textbox?

Beitrag von Libremiki » Sa 1. Feb 2020, 10:50

Habe mein Problem gelöst. In
SELECT * FROM "Tabelle" WHERE LOWER("Artikel Name") LIKE '%'||(SELECT LOWER("Suchbegriff") FROM "Filter" WHERE "ID" = TRUE)||'%'

musste ich True auf FALSE setzen, jetzt filtert das Formular und zeigt alle Einträge die "Knie" enthalten an, also auch Kniegelenk oder Einachs-Kniegelenk.

Allerdings habe ich jetzt das Problem dass sich die Anzeige nur updated wenn ich das Formular schließe und wieder öffne. Funktioniert allerdings wenn der Button "Filter" im Hauptformular steht.
Dateianhänge
Form.jpg
Form.jpg (117.53 KiB) 3592 mal betrachtet
Zuletzt geändert von Libremiki am Sa 1. Feb 2020, 13:22, insgesamt 3-mal geändert.

Libremiki
Beiträge: 49
Registriert: Fr 14. Apr 2017, 11:03

Re: Suche mit Eingabe in einer Textbox?

Beitrag von Libremiki » Sa 1. Feb 2020, 10:59

Das Base-Handbuch habe ich mir sogar als Bookmark hinterlegt. Es ist sehr ausführlich mit vielen Beispielen.
Die Frage ist nicht wie kann man das Buch verbessern sondern die Qualität der Leser. Leute wie ich sind Spezialisten auf einem anderen Fachgebiet. Ich verstehe einfach manche Fachbegriffe oder Zusammenhänge nicht, SQL ist jedenfalls auch nicht meine Stärke.
Genau genommen bräuchte ich ein Bilderbuch auf kindlichem Niveau oder ich müsste das einmal richtig lernen.
Mein Ziel ist es diese Datenbank so weit zu entwickeln dass ein professioneller Programmierer versteht wie wir arbeiten, welche Informationen wir wann benötigen usw. Dann könnte dies in eine echte Software umgesetzt werden, vielleicht ein interessantes Projekt für einen Studenten - wir werden sehen.
Danke für das interessante Handbuch, es ist interessant und gibt mir Stoff zum Grübeln. Bestimmt "das Buch" für Leute mit mehr Erfahrung.

RobertG
* LO-Experte *
Beiträge: 2884
Registriert: Sa 19. Mai 2012, 17:37
Kontaktdaten:

Re: Suche mit Eingabe in einer Textbox?

Beitrag von RobertG » Sa 1. Feb 2020, 16:47

Hallo Libremiki,

dass Du die ID auf FALSE setzen musst liegt daran, dass Du nicht den Datensatz änderst, bei dem ID=TRUE ist. Bei mir existiert so ein Datensatz mit ID=FALSE nicht, weil ich direkt nach Erstellen den Datensatz mit TRUE eingebe und das Formular (bei Dir Form_Filter) so einstelle, dass bei "Filter" ID=TRUE steht.

Der Button muss natürlich, wie ich es richtig aus dem Screenshot sehen kann, in das Formular gesetzt werden, das aktualisiert werden soll. Bei ihm die Aktion "Formular aktualisieren" eingestellt. Betätige ich den Button nach Verlassen des Eingabefeldes aus "Form_filter", so wird (wegen des Verlassen des Formulars) zuerst der Datensatz aus "Form_filter" gespeichert und dann die Aktion "Formular aktualisieren" ausgeführt.

Gruß

Robert
https://de.libreoffice.org/get-help/documentation/
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare

Libremiki
Beiträge: 49
Registriert: Fr 14. Apr 2017, 11:03

Re: Suche mit Eingabe in einer Textbox?

Beitrag von Libremiki » So 2. Feb 2020, 09:10

Danke für die weiteren Erklärungen. In meiner "echten" Datenbank muss ich auch "TRUE" verwenden. Erfolg macht Neugierig und so habe ich es geschafft dass ich in das Textfeld entweder den Artikelnamen oder die Artikelnummer eingeben kann. Gefiltert werden dann in der "Tabelle" die Spalten "Artikelname" und "Artikelnummer". Das ist praktisch weil man im realen Einsatz z.B. die Artikelnummer einscannen kann ohne vorher das entsprechende Eingabefeld auswählen zu müssen.
Mal sehen was ich als nächstes ausprobiere.


An alle, die das LibreOffice-Forum gern nutzen und unterstützen wollen:


Bitte helfen Sie uns mit 7 Euro pro Monat.
Durch Ihren Beitrag tragen Sie dazu bei, unsere laufenden Kosten für die kommenden Monate zu decken.
Unkompliziert per Kreditkarte oder PayPal.
Als ein kleines Dankeschön werden Sie im LO-Forum als SUPPORTER gekennzeichnet.



Antworten