Nach dem Monat in einem Datumsfeld suchen

Base ermöglicht es Ihnen, Ihre Daten in einer Datenbank direkt mit LibreOffice zu bearbeiten.
Antworten
ollva
Beiträge: 2
Registriert: Sa 22. Dez 2018, 18:48

Nach dem Monat in einem Datumsfeld suchen

Beitrag von ollva » Sa 22. Dez 2018, 19:23

Guten Abend zusammen und hoffentlich eine ruhige Zeit vor Weihnachten.

Ich bin erst seit ein paar Tagen im Libre-Fieber und möchte mich direkt an einer kleinen Datenbank probieren.

Mein Problem ist folgendes:
Ich habe eine Tabelle mit Mietwohnungen und deren Heizanlagen inkl. eines Datumsfeldes für die Wartung. Über Verknüpfungen habe ich eine Tabelle mit Komponenten zu jeder Heizung verbunden. Jetzt habe ich eine Form, bei der ich über die Parameterabfrage einen Monat wählen kann (z.B.: Ziffer 2 für Februar eintippen); dafür greife ich über die Funktion Month ("Datum") auf mein Datumsfeld zu. Das ist allerdings nicht so schön. Ich schaffe es aber nicht, dass ganze mit einem DropDown einer Feldliste abzufragen. Ich habe eine eigene Tabelle mit 12 Monaten angelegt, aber kein Erfolg, weil ich keine Abfrage hinbekomme, die den ausgewählten Monat auf das Datumsfeld filtert.

Ich würde gerne in dem DropDown eine Auswahl der Monate (entweder Jan-Dez, oder nur die Monate, für die es eine Wartung gibt) bekommen und daraus einen wählen können und dann alle Datensätze gefiltert sehen, bei denen das Wartungsdatum in diesen Monat fällt. Gerne ohne Makros.

Ich habe meine DB mit ein paar Datensätzen angehängt, weil es mir schwer fällt zu beschreiben, wie ich das meine.

Vielen Dank im Voraus.

Gruß Olli
Dateianhänge
Kundewartung.zip
(94.97 KiB) 31-mal heruntergeladen

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

Re: Nach dem Monat in einem Datumsfeld suchen

Beitrag von RobertG » So 23. Dez 2018, 09:34

Hallo Olli,

ich hoffe, dass ich das richtig verstanden habe: Du willst ein Listenfeld statt einer Eingabe über eine Parameterabfrage? Ich habe das einmal eingebaut. So etwas geht grundsätzlich über eine zusätzliche Filter-Tabelle.

Gruß

Robert
Dateianhänge
Kundewartung.zip
Auswahl mit Listenfeld
(164.16 KiB) 38-mal heruntergeladen
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

ollva
Beiträge: 2
Registriert: Sa 22. Dez 2018, 18:48

Re: Nach dem Monat in einem Datumsfeld suchen

Beitrag von ollva » So 23. Dez 2018, 20:54

Hallo Robert und vielen,vielen Dank.

Das ist genau das, was ich seit Tagen probiere (mit Abfragen, Filtertabellen etc.). Perfekt. Wärst du so nett und würdest mir noch ganz kurz beschreiben, was der SQL-String in der Abfrage macht. Ich habe es leider noch nicht durchschaut...

Vielen Dank, Olli

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

Re: Nach dem Monat in einem Datumsfeld suchen

Beitrag von RobertG » Mo 24. Dez 2018, 09:54

Hallo Olli,

Code: Alles auswählen

SELECT * FROM "Ansprechpartner_Anlage" 
WHERE MONTH( "Wartungsdatum" ) = COALESCE ( ( SELECT "Monat" FROM "Filter" WHERE "ID" = TRUE ), MONTH( "Wartungsdatum" ) )
Alle Datensätze aus der Tabelle "Ansprechpartner_Anlage" werden angezeigt, die der WHERE-Bedingung entsprechen.
Der Monat des "Wartungsdatums" wird mit dem Monatseintrag aus der Tabelle "Filter" verglichen. Dabei wird aus der Tabelle "Filter" nur der Datensatz ausgelesen, bei dem das Feld "ID" TRUE ist (Primärschlüssel ist ein Ja/Nein-Feld, da nur ein Datensatz gebraucht wird - der, bei dem 'Ja' angeklickt ist.).
Mit COALESCE wird nachgesehen, ob diese Bedingung nicht NULL ist (leeres Feld). Ist die Bedingung NULL, dann wird stattdessen der Monat des Wartungsdatums mit dem Monat des Wartungsdatums verglichen - das bedeutet alle Felder werden angezeigt, da kein Monat vorausgewählt ist.

Achtung: Du berücksichtigst bisher nicht das Jahr. Für Dezember würden also die Datensätze mit Monat Dezember von 2017, 2018, 2019 usw. angezeigt.

Zusatzbeobachtung zu dem von mir erstellten Formular: Die Navigationsleiste, die bei Deinem Formular unten eingeblendet wird, stört anscheinend den reibungslosen Ablauf für die Filterung. Das Listenfeld war immer erst beim 2. Klick aktiv. Kann natürlich an meinem System liegen.

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

Antworten