BITTE helfen Sie uns HEUTE mit einer SPENDE
Helfen Sie das LibreOffice Forum zu erhalten!

❤️ DANKE >><< DANKE ❤️

> KEINE WERBUNG FÜR REGISTRIERTE BENUTZER!<
Ihre Spende wird für die Deckung der laufenden Kosten sowie den Erhalt und Ausbau 🌱 des LibreOffice Forums verwendet.
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗

Suche mit Formular-Textbox

Base ermöglicht es Ihnen, Ihre Daten in einer Datenbank direkt mit LibreOffice zu bearbeiten.
caldir65
Beiträge: 17
Registriert: Sa 26. Nov 2022, 22:26

Suche mit Formular-Textbox

Beitrag von caldir65 » So 8. Jan 2023, 20:41

Hallo,

ich habe ein Suchformular nach einem früheren Beitrag hier erstellt.

In der SQL-Abfrage habe ich auch berücksichtigt, daß bei leerem Feld alles angezeigt werden soll.
Leider funktioniert nur die Suche mit leerem Feld, wo folgerichtig alles angezeigt wird. Gebe ich jedoch einen Wert vor, so kommt in meinem Tabellenfeld nur eine leere Anzeige.

Die Tabellen werden auf meinem MariaDB-Server geführt, die Formulare etc. kommen aus LO 7.3. Als Filter kommt die Tabelle "Hausrat_filter" mit nur zwei Feldern zum Einsatz.
Das Unterformular wird per SQL gefüttert:

Code: Alles auswählen

SELECT * FROM "hausrat_melle_bakum" WHERE LOWER("artikel") LIKE COALESCE('%'||(SELECT LOWER("Suchbegriff") FROM "Hausrat_filter" WHERE "ID" = TRUE)||'%',LOWER("artikel")) 
Woran kann es jetzt liegen, daß ich zwar alles angezeigt bekomme, wenn der Suchbegriff leer ist, jedoch nichts, wenn ich einen begriff nehme, der definitiv im Feld artikel enthalten ist?

Gruß, Christoph
Dateianhänge
Auswahl_033 - ohne Suchbegriff.png
Auswahl_033 - ohne Suchbegriff.png (20.27 KiB) 750 mal betrachtet
Auswahl_033 - Mit Suchbegriff.png
Auswahl_033 - Mit Suchbegriff.png (8.81 KiB) 750 mal betrachtet
Gruß, Christoph
----
LibreOffice Linux, Kubuntu 23.10, MariaDB 10 auf SynologyServer

RobertG
Beiträge: 2732
Registriert: Sa 19. Mai 2012, 17:37
Kontaktdaten:

Re: Suche mit Formular-Textbox

Beitrag von RobertG » So 8. Jan 2023, 21:06

Der Code ist wegen der Länge und des dann eingeblendeten Scrollbalkens nicht gut erkennbar:

Code: Alles auswählen

SELECT * FROM "hausrat_melle_bakum" 
WHERE LOWER("artikel") LIKE 
COALESCE('%'||(SELECT LOWER("Suchbegriff") FROM "Hausrat_filter" WHERE "ID" = TRUE)||'%',LOWER("artikel")) 
Zeige einmal einen Screenshot Deiner Tabelle "Hausrat_filter". Starte auch einmal die Unterabfrage

Code: Alles auswählen

SELECT LOWER("Suchbegriff") FROM "Hausrat_filter" WHERE "ID" = TRUE
Da kein Datensatz angezeigt wird, wenn wirklich Inhalt in der Tabelle "Hausrat_filter" steht, der Begriff also nicht NULL ist, muss dort der Fehler stecken.
Vermutlich erhältst Du den gleichen leeren Inhalt, wenn Du ein 'n' in das Feld einträgst. Oder Du hast das Feld in der Tabelle "Hausrat_filter" so erstellt, dass es nicht einfach VARCHAR sondern CHAR ist und dann einfach lauter Leerzeichen bis zur Feldlänge anhängt.
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

caldir65
Beiträge: 17
Registriert: Sa 26. Nov 2022, 22:26

Re: Suche mit Formular-Textbox

Beitrag von caldir65 » Mo 9. Jan 2023, 08:13

Moin Robert,

anbei einmal der Tabellenscreenshot
Auswahl_036 - Tabellenentwurf Hausrat_filter.png
Auswahl_036 - Tabellenentwurf Hausrat_filter.png (33.73 KiB) 721 mal betrachtet
und die gewünschte Teilabfrage...
Auswahl_035 - Teilabfrage.png
Auswahl_035 - Teilabfrage.png (60.43 KiB) 721 mal betrachtet
Ganz nebenbei - mir ist aufgefallen, daß auf meinem Desktop mit LO 7.3 ein Tabellen-Entwurf bzw. ein Tabellenfeld nicht mehr zu bearbeiten ist, wenn es erstmal gepeichert ist - bei LO 7.4fresh (Arch) auf meinem Notebook könnte ich jedoch etwas ändern - ist das gewollt, oder Einstellungssache für den SQL-Treiber?

Gruß, Christoph
Gruß, Christoph
----
LibreOffice Linux, Kubuntu 23.10, MariaDB 10 auf SynologyServer

RobertG
Beiträge: 2732
Registriert: Sa 19. Mai 2012, 17:37
Kontaktdaten:

Re: Suche mit Formular-Textbox

Beitrag von RobertG » Mo 9. Jan 2023, 10:45

Hallo Christoph,

Schreibschutz bei erstellten Feldern:
Das ist abhängig von der verwendeten Datenbank und dem Treiber. Du scheinst nicht mit der internen Version zu arbeiten. Womit verbindest Du zu welcher Datenbank?

Tabelle "Hausrat_filter":
Du hast ein Feld ID als TINYINTEGER erstellt. Das bedeutet, dass das Feld unterschiedliche Zahlen (von -128 bis + 127) abspeichern kann. So ein Feld wird nicht mit "ID" = TRUE abgefragt. Bei '1' wird das funktionieren, weil TRUE und '1' gleich behandelt werden. Entweder also "ID" = 1 oder das Feld zu einem Ja/Nein-Feld machen (BOOLEAN).

Bevor wir weiter nach der Ursache suchen, die ja anscheinend nicht in der Unterabfrage liegt, poste einmal die Art der Datenbank und die Verbindung dazu. Kann ja sein, dass das an den || liegt.
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

caldir65
Beiträge: 17
Registriert: Sa 26. Nov 2022, 22:26

Re: Suche mit Formular-Textbox

Beitrag von caldir65 » Mo 9. Jan 2023, 20:54

RobertG hat geschrieben:
Mo 9. Jan 2023, 10:45
Schreibschutz bei erstellten Feldern:
Das ist abhängig von der verwendeten Datenbank und dem Treiber. Du scheinst nicht mit der internen Version zu arbeiten. Womit verbindest Du zu welcher Datenbank?
Ich habe einen MariaDB-Server, auf dem die Tabellen liegen. Verbunden ist Base über den internen Treiber von LO mit dem Server.
Tabelle "Hausrat_filter":
Du hast ein Feld ID als TINYINTEGER erstellt. Das bedeutet, dass das Feld unterschiedliche Zahlen (von -128 bis + 127) abspeichern kann. So ein Feld wird nicht mit "ID" = TRUE abgefragt. Bei '1' wird das funktionieren, weil TRUE und '1' gleich behandelt werden. Entweder also "ID" = 1 oder das Feld zu einem Ja/Nein-Feld machen (BOOLEAN).
Ein Boolean dürfte SQL scheint schwierig sein, da es offensichtlich als untermenge von Int/Tinyint ... betrachtet wird. Demnach müsste ein Boolean quasi simuliert werden...
Bevor wir weiter nach der Ursache suchen, die ja anscheinend nicht in der Unterabfrage liegt, poste einmal die Art der Datenbank und die Verbindung dazu. Kann ja sein, dass das an den || liegt.
Gruß, Christoph
Gruß, Christoph
----
LibreOffice Linux, Kubuntu 23.10, MariaDB 10 auf SynologyServer

RobertG
Beiträge: 2732
Registriert: Sa 19. Mai 2012, 17:37
Kontaktdaten:

Re: Suche mit Formular-Textbox

Beitrag von RobertG » Mo 9. Jan 2023, 21:04

Hallo Christoph,

MySQL gibt bei der Verwendung von || keine Verknüpfung raus. Das ist nämlich für MariaDB standardmäßig der Operator OR. Kann allerdings irgendwo in den Einstellungen der Datenbank geändert werden. Verwende stattdessen CONCAT. Also:

Code: Alles auswählen

SELECT * FROM "hausrat_melle_bakum" 
WHERE LOWER("artikel") LIKE 
COALESCE(CONCAT('%',(SELECT LOWER("Suchbegriff") FROM "Hausrat_filter" WHERE "ID" = TRUE),'%'),LOWER("artikel")) 
Wenn Du beim direkten Treiber die Tabellenstruktur nicht ändern kannst, dann bist Du vermutlich als anderer Benutzer mit der Tabelle verbunden als der Benutzer, der die Tabelle erstellt hat. Oder Du hast als der aktuelle Benutzer keine Berechtigung zur Änderung. Ich kann hier mit dem direkten Treiber alle Felder bearbeiten und ändern.
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

caldir65
Beiträge: 17
Registriert: Sa 26. Nov 2022, 22:26

Re: Suche mit Formular-Textbox

Beitrag von caldir65 » Mo 9. Jan 2023, 21:21

Hallo Robert,

danke, das funktioniert offensichtlich.
Gruß, Christoph
Gruß, Christoph
----
LibreOffice Linux, Kubuntu 23.10, MariaDB 10 auf SynologyServer

caldir65
Beiträge: 17
Registriert: Sa 26. Nov 2022, 22:26

Re: Suche mit Formular-Textbox

Beitrag von caldir65 » Di 10. Jan 2023, 20:04

Hallo,

kann ich die resultierende Anzeige in dem Tabellen-Steuerelement jetzt auch noch sortieren lassen - vorzugsweise nach dem Feld "artikel"
Gruß, Christoph
----
LibreOffice Linux, Kubuntu 23.10, MariaDB 10 auf SynologyServer

RobertG
Beiträge: 2732
Registriert: Sa 19. Mai 2012, 17:37
Kontaktdaten:

Re: Suche mit Formular-Textbox

Beitrag von RobertG » Di 10. Jan 2023, 21:32

Zum Sortieren musst Du doch nur auf den entsprechenden Tabellenkopf gehen und dann in der Navigationsleiste das entsprechende Symbol wählen (aufwärts, abwärts oder mit Dialog für mehrere Felder).

Ansonsten:

Code: Alles auswählen

SELECT * FROM "hausrat_melle_bakum" 
WHERE LOWER("artikel") LIKE 
COALESCE(CONCAT('%',(SELECT LOWER("Suchbegriff") FROM "Hausrat_filter" WHERE "ID" = TRUE),'%'),LOWER("artikel")) 
ORDER BY "artikel" ASC
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

caldir65
Beiträge: 17
Registriert: Sa 26. Nov 2022, 22:26

Re: Suche mit Formular-Textbox

Beitrag von caldir65 » Mi 11. Jan 2023, 08:13

Moin Robert,

Vielen Dank, hat geklappt.
Da ist die erste Variante über die Tabellenspalte in diesem Fall die flexiblere...

Kann ich eigentlich die Suche so gestalten, daß ich im Suchfeld jetzt den Begriff eingebe, und dann die Suche (den Button) direkt aus dem Suchfeld mit der "Enter"-Taste auslöse? Das wäre noch intuitiver ...

Gruß, Christoph
Gruß, Christoph
----
LibreOffice Linux, Kubuntu 23.10, MariaDB 10 auf SynologyServer

An alle, die das LibreOffice-Forum nutzen:


Bitte beteiligen Sie sich mit 7 Euro pro Monat und helfen uns bei unserem Budget für das Jahr 2024.
Einfach per Kreditkarte oder PayPal.
Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet.

❤️ Vielen lieben Dank für Ihre Unterstützung ❤️

Antworten