Frage stellen
0

Parameter Abfrage mit voreingestelltem Wert

gefragt 2016-07-05 12:29:36 +0200

JoergZ Gravatar-Bild

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.

Bearbeiten Tags ändern Melden schließen vereinen löschen

2 Antworten

0

geantwortet 2016-07-28 21:11:49 +0200

RobertG Gravatar-Bild

updated 2016-07-28 21:20:04 +0200

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.

Bearbeiten Melden löschen Link mehr
0

geantwortet 2016-07-06 08:10:15 +0200

Toxitom Gravatar-Bild

Ja, geht alles ... musste dann eben mit Makros programmieren :)

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.

Bearbeiten Melden löschen Link mehr
Registrieren oder einloggen, um zu antworten

Antwortwerkzeuge

1 Beobachter

Statistik

Gefragt: 2016-07-05 12:29:36 +0200

Angesehen: 571 Mal

Aktualisiert: Jul 28 '16