🙏 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. 🤗

Hilfe zu Parameterabfrage

Base ermöglicht es Ihnen, Ihre Daten in einer Datenbank direkt mit LibreOffice zu bearbeiten.
Freischreiber
* LO-Experte *
Beiträge: 832
Registriert: Fr 28. Mär 2014, 10:41

Re: Hilfe zu Parameterabfrage

Beitrag von Freischreiber » Fr 5. Dez 2014, 16:49

Hallo,

mich hat hier schon die Frage inspiriert, meine Parameterabfrage kontext-insensitiv und automatisch trunkiert zu machen, und ich habe das hier gebaut:

Code: Alles auswählen

SELECT "a".*, ( SELECT "Anrede" FROM "t-anreden" WHERE "ID" = "a"."AnredenID" ) AS "Anrede", ( SELECT "Titel" FROM "t-titel" WHERE "ID" = "a"."TitelID" ) AS "Titel", ( SELECT "Statusart" FROM "t-status" WHERE "ID" = "a"."StatusID" ) AS "Statusart", ( SELECT "Bemerkung" FROM "t-adressbemerkungen" WHERE "AdressID" = "a"."ID" ) AS "Bemerkung" FROM "t-adressen" AS "a" WHERE ( LOWER ( "Nachname" ) LIKE LOWER ( :NachnameOderOKfürNeu || '%' ) ) OR ( LOWER ( "Firma" ) LIKE LOWER ( :UnternehmenFirma || '%' ) ) ORDER BY "Nachname", "Vorname"
Groß- oder Kleinschreibung ignoriert er jetzt, das ist gut, aber es werden zuviele Ergebnisse geliefert.

Ich hätte gerne, daß ich entweder den Anfang von Nachname oder Firma eingeben kann, nach Auswahl des Suchfeldes, das jeweils andere Suchfeld leer lasse, und dann die passenden Datensätze gezeigt werden.

Kann mir jemand helfen, wo der Fehler liegt?

Danke
Freischreiber
Freischreiber nutzt seit 1/2025 LibreOffice Version 7.2.7.2 unter Windows 11 und SplitDB mit HSQL 2.7.4.
Lesenswert: https://wiki.documentfoundation.org/ReleasePlan/de

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

Re: Hilfe zu Parameterabfrage

Beitrag von RobertG » Fr 5. Dez 2014, 22:57

Hallo Freischreiber,

mit

Code: Alles auswählen

LOWER ( "Nachname" ) LIKE LOWER ( :NachnameOderOKfürNeu || '%' ) 
hast Du bei direkten Abfragen bis zur Version LO 4.4 immer einen Treffer, wenn das Feld "Nachname" nicht leer ist. Das liegt daran, dass die Parametereingabe nicht NULL ausgibt, wenn sie leer geblieben ist. Stattdessen wird ein leerer Text abgeliefert. Damit steht nach der Parametereingabe bei einer leeren Eingabe

Code: Alles auswählen

LOWER ( "Nachname" ) LIKE '%' 
Das bedeutet nichts anderes, als dass im Feld "Nachname" alles stehen darf - nur leer darf es nicht sein.
Und da es mit der zweiter Bedingung genauso ist und beide mit einem OR verbunden sind wird bei einem leeren Parameterfeld eben immer fast alles ausgegeben.

Code: Alles auswählen

LOWER ( "Nachname" ) LIKE LOWER ( NULLIF(:NachnameOderOKfürNeu,'') || '%' ) 
Diese Abfrage macht aus dem Wert für den Parameter bei direkten Abfragen eine leere Zelle NULL. Damit dürftest Du vielleicht mehr Erfolg haben.

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

Freischreiber
* LO-Experte *
Beiträge: 832
Registriert: Fr 28. Mär 2014, 10:41

Re: Hilfe zu Parameterabfrage

Beitrag von Freischreiber » Sa 6. Dez 2014, 09:09

Hallo Robert,

NULLIF! Kaum macht man es richtig, schon klappt es... vielen Dank!

Deswegen bin ich auch mit IFNULL nicht weitergekommen, weil dort auch immer ein leerer Text statt Null geliefert wird, oder?

Gruß
Freischreiber
Freischreiber nutzt seit 1/2025 LibreOffice Version 7.2.7.2 unter Windows 11 und SplitDB mit HSQL 2.7.4.
Lesenswert: https://wiki.documentfoundation.org/ReleasePlan/de

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

Re: Hilfe zu Parameterabfrage

Beitrag von RobertG » Sa 6. Dez 2014, 10:29

Hallo Freischreiber,
Freischreiber hat geschrieben: Deswegen bin ich auch mit IFNULL nicht weitergekommen, weil dort auch immer ein leerer Text statt Null geliefert wird, oder?
Genau, ist aber behoben ab der Version LO 4.4.
Wir hatten diesen Thread:
http://de.openoffice.info/viewtopic.php?f=8&t=64908
in dem es um solche Abfragekonstruktionen ging. Die Parametereingabe funktioniert zur Zeit anders, wenn Du die Abfrage direkt stellst, als wenn Du die Abfrage in einem Formular nutzt. Im Formular wird NULL weiter gegeben, bei der direkten Abfrage eben der leere Text.
Lionel hat das dann innerhalb kürzester Zeit für die zukünftigen Versionen behoben. So schnell habe ich das bei Base-Bugs noch nie erlebt.

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

Freischreiber
* LO-Experte *
Beiträge: 832
Registriert: Fr 28. Mär 2014, 10:41

Re: Hilfe zu Parameterabfrage

Beitrag von Freischreiber » So 7. Dez 2014, 17:08

Hallo Robert,

hoffentlich verschluckt sich die 4.4 später nicht an dem NULLIF, wenn ich irgendwann umsteige. Im Moment halte ich mich immer an die stabilen Versionen.

Zur Parameterabfrage habe ich noch eine andere Frage:
Sobald ich das Formular starte, wird die Abfrage ausgeführt und ich nach dem anzuzeigenden Namen gefragt. Dann öffnet das Formular mit den Ergebnissen.

Problem jetzt: Gibt es einen Weg, die Frage nach den Parametern erneut zu starten, ohne jedesmal das Formular zu schließen und neu zu starten?

Ich habe einen Button "Aktualisieren", der auf Aktion "Formular aktualisieren" steht. Der ist aber immer ausgegraut, wenn man die Eingabe der Parameter aus irgendeinem Grund abbricht. Man kommt dann nur zur Parametereingabe, wenn man das ganze Formular zumacht und neu startet...

Gruß
Freischreiber
Freischreiber nutzt seit 1/2025 LibreOffice Version 7.2.7.2 unter Windows 11 und SplitDB mit HSQL 2.7.4.
Lesenswert: https://wiki.documentfoundation.org/ReleasePlan/de

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

Re: Hilfe zu Parameterabfrage

Beitrag von RobertG » So 7. Dez 2014, 19:54

Hallo Freischreiber,

lege die entsprechende Abfrage in ein Unterformular. Gib den Parameter aus dem Hauptformular weiter. Das Hauptformular baust Du mit Hilfe einer Filtertabelle auf, die nur einen einzigen Datensatz speichert. Der Wert für den Parameter wird dann an das entsprechende Feld der Filtertabelle gekoppelt.
Wenn Du nicht klar kommst: Diese Art des Suchens ist in den Base-Beispielen V44 beschrieben. Die findest Du im Netz unter dem untenstehenden Link zur Handbuch-Weiterentwicklung.

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

Freischreiber
* LO-Experte *
Beiträge: 832
Registriert: Fr 28. Mär 2014, 10:41

Re: Hilfe zu Parameterabfrage

Beitrag von Freischreiber » Mo 8. Dez 2014, 15:02

Hallo Robert,

also, dann würde ich das Eingabefeld der Parameterabfrage gar nicht mehr sehen, sondern die Werte kommen aus einem Hauptformular, das ich erst bauen muß?

Bis jetzt habe ich
- alle Eingabefelder meines Hauptformulars (und alle Unterformulare) in ein neues Unterformular verschoben mit dem Formularnavigator
- eine Filtertabelle angelegt mit 1. Spalte ID ja/nein, Startwert "ja" (Primärschlüssel) und 2. Spalte AdressID Integer.

Unklar ist mir:
- müssen da weitere Spalten rein, wenn ich entweder nach Nachname oder Firma suchen will?
- muß die neue Tabelle irgendwie mit anderen Tabellen verknüpft werden?
- das Hauptformular bekommt zwei Texteingabefelder Nachname und Firma?

Dem Unterformular mit den bisherigen Feldern sage ich unter Formulareigenschaften, es soll sich den Parameter aus dem Hauptformular holen?

Sorry für die etwas doofen Fragen, aber da das Handbuch nunmal nicht genau meinen Fall behandeln kann, habe ich immer Übertragungsprobleme.

Gruß
Freischreiber
Freischreiber nutzt seit 1/2025 LibreOffice Version 7.2.7.2 unter Windows 11 und SplitDB mit HSQL 2.7.4.
Lesenswert: https://wiki.documentfoundation.org/ReleasePlan/de

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

Re: Hilfe zu Parameterabfrage

Beitrag von RobertG » Mo 8. Dez 2014, 16:54

Hallo Freischreiber,

für jeden Begriff, den Du suchen willst, muss da eine Spalte rein. Die Feldtypen mussen allerdings übereinstimmen (Integer für Integer, Varchar für Varchar ...).
Die Tabelle muss nirgendwo mit verknüpft werden.
Das Hauptformular erhält alle Felder, nach denen Du suchen willst, vor allem aber das feld, das auch den Parameter bedienen soll. Das Feld "ID" brauchst Du nicht auf zu nehmen. Stattdessen füllst Du den ersten Primärschlüsselwert mit "Wahr" (oder "Ja") aus.
Das Hauptformular erhält einen Filter ("ID" muss "Wahr" sein) und darf nur Datensätze ändern - nicht hinzufügen, nichts löschen.
Dem Unterformular teislt Du mit, welches Feld aus dem Hauptformular mit dem Parameter verbunden ist. Achtung: Der Parameter erscheint nicht in der Auswahl. Du musst ihn direkt eingeben, und zwar ohne den Doppelpunkt.
Der Button für das Aktualisieren kommt in das Unterformular. Das speichert den Wert aus dem hauptformular ab und filtert dann das Unterformular.

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

Freischreiber
* LO-Experte *
Beiträge: 832
Registriert: Fr 28. Mär 2014, 10:41

Re: Hilfe zu Parameterabfrage

Beitrag von Freischreiber » Mo 8. Dez 2014, 17:29

Hallo Robert,

habe - hoffentlich - alles so gemacht.

Problem: Die Suchfelder nehmen keine Eingabe an! Die Einstellungen dafür siehe Screenshot.
Suchfeld-Einstellungen.gif
Suchfeld-Einstellungen.gif (22.19 KiB) 3739 mal betrachtet
Gruß
Freischreiber
Freischreiber nutzt seit 1/2025 LibreOffice Version 7.2.7.2 unter Windows 11 und SplitDB mit HSQL 2.7.4.
Lesenswert: https://wiki.documentfoundation.org/ReleasePlan/de

Freischreiber
* LO-Experte *
Beiträge: 832
Registriert: Fr 28. Mär 2014, 10:41

Re: Hilfe zu Parameterabfrage

Beitrag von Freischreiber » Mo 8. Dez 2014, 17:35

Hallo Robert,

Achtungachtung, es klappt! In die Suchfelder konnte ich etwas eingeben, nachdem ich einmal in der Filtertabelle einen Eintrag gemacht, gespeichert und ihn wieder gelöscht habe.

Der Parameter wird übergeben. Problem nur, ich bekomme als erstes jedesmal eine Makro-Fehlermeldung:
Makro-Fehlermeldung.gif
Makro-Fehlermeldung.gif (21.13 KiB) 3739 mal betrachtet
Wenn ich die wegklicke, sehe ich die passenden Einträge im Formular!

Das kriegen wir auch noch weg, was? :lol:

Gruß
Freischreiber
Freischreiber nutzt seit 1/2025 LibreOffice Version 7.2.7.2 unter Windows 11 und SplitDB mit HSQL 2.7.4.
Lesenswert: https://wiki.documentfoundation.org/ReleasePlan/de


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