Parameter Abfrage mit voreingestelltem Wert

Ich benutze LibreOffice Base, um eine Mysql Datenbank abzufragen. Nun gibt es eine Abfrage, bei der ich die Ergebnisse von vornherein eingrenzen möchte. Dies geschieht über die Parameterabfrage:parametername. Da in der Abfrage insgesamt 5 Parameter abgefragt werden, die jedoch nicht immer alle benutzt werden müssen, möchte ich, dass wenn bei einzelnen Parametern keine Eingabe erfolgt, ein in der Abfrage hinterlegter fester Wert benutzt wird.
Beispiel: Das Datum der Datensätze kann datumsmäßig eingegrenzt werden Datensätze älter oder gleich :datum1 und jünger oder gleich :datum2. Wenn als :datum2 nichts eingegeben wird, soll immer die Funktion now() als voreingestellter Wert benutzt werden. Kann man das machen und wenn ja wie?

Weitergehende Frage: Falls das grundsätzlich möglich ist, kann ich dann auch eine Calc-Tabelle so mit der Abfrage verknüpfen, dass ich in bestimmten Feldern der Tabelle die Werte für die Parameterabfragen eingebe und die Abfrage diese Zellen ausliest und als Paramter benutzt.

Ja, geht alles … musste dann eben mit Makros programmieren :slight_smile:

Die voreingestellten einfacheren Abfragefunktionen sind dafür nicht ausreichend. Im Grunde sind dies ja auch “nur” Makros - also Skripte, die dann die fertige Abfrage zusammenbauen.

Du kannst statt

“Datum” <= :datum1

“Datum” <= IFNULL(:datum1,NOW())

schreiben. Das funktioniert allerdings erst ab LO 4.4 einwandfrei. Vorher wurden leere Felder bei Parameterabfragen auch teilweise als leerer Text interpretiert und nicht als NULL.

Zur weitergehenden Frage: Calc-Tabelle macht da keinen Sinn. Nimm eine Tabelle aus Deiner Datenbank, in diesem Fall eben MySQL. Das kann auch eine temporäre Tabelle sein. Die Tabelle benötigt nur einen Datensatz. Dann kannst Du Dir die ganzen Parameter sparen, gibst in die Tabelle die Werte ein und startest dann die Abfrage:

“Datum” <= IFNULL((SELECT “Datum1” FROM “Filter”),NOW())

… funktioniert, wenn die Tabelle nur einen Datensatz enthält. Bei MySQL und Zugriff mehrerer Personen solltest Du eine temporäre Tabelle oder eine Tabelle nutzen, in der über Deine Verbindungsnummer der einzelne Datensatz gefunden werden kann. Das geht praktikabel aber nur über Makros - siehe das Base-Handbuch, S. 475 in der Ausgabe für LO 5.1.