[gelöst] Base Abfrage: Datum addieren (Date_ADD) und mit DATE_DIFF 'überprüfen'

Datenbanklösungen mit AOO/LO

Moderator: Moderatoren

mtsfja
Beiträge: 4
Registriert: So, 22.11.2015 18:49

[gelöst] Base Abfrage: Datum addieren (Date_ADD) und mit DATE_DIFF 'überprüfen'

Beitrag von mtsfja »

Hallo zusammen,

ich habe mit dem unten stehenden Code ein Problem.

Wenn ich die Abfrage starte bekomme ich die Fehlermeldung, dass die DATEADD-Funktion fehlerhaft ist (Acess is denied).
Obwohl diese und weitere in verschiedenen Threads gefundene Schreibweisen angeblich funktionieren sollen, komme ich mit den
Varianten stets zu einer Fehlermeldung.

Grunsätzlich bin ich daran interessiert die Fälligkeit (Datum der Rechnungsstellung + 14 Tage Frist) der Rechnung zu ermitteln.

Code: Alles auswählen

datediff ('dd' , 
DATEADD ('dd', "14" , "Rechnungen"."Datum") , 
 current_date) 
>1

Vielen Dank im Voraus
Zuletzt geändert von mtsfja am Mi, 02.12.2015 09:30, insgesamt 1-mal geändert.
F3K Total
********
Beiträge: 3704
Registriert: Mo, 28.02.2011 17:49

Re: Base Abfrage: Datum addieren (Date_ADD) und mit DATE_DIFF 'überprüfen'

Beitrag von F3K Total »

Hi,
wenn du Base mit der "mitgelieferten, eingebetteten HSQLDB" verwendest, geht date_add nicht.
Du siehst es unten in der BASE Statusleiste, links, da steht eingebettete Datenbank HSQL Datenbank-Engine.
Es gibt aber einen Workaround:
Statt mit einer Datumsspalte zu arbeiten, verwendet man eine Integer-Spalte für das Datum. Dann kann man leicht addieren und subtrahieren. Siehe Beispiel anbei.
Wenn du allerdings dann noch den Bezug zu HEUTE reinrechnen möchtest, mußt die HEUTE als INTEGER erzeugen.
Das geht mit

Code: Alles auswählen

DATEDIFF('DD',1900-01-01,CURRENT_DATE)
Ist aber in einer Abfrage über viele Datesätze sehr langsam, darum habe ich das Datum in der Ansicht V_HEUTE einzeilig abgefragt, um es dann als Unterabfrage in die Hauptabfrage Q_TESTDATEN einzubauen.

Gruß R
Dateianhänge
Workaround_DATEADD.odb
(14.63 KiB) 224-mal heruntergeladen
RobertG
********
Beiträge: 2034
Registriert: Fr, 13.04.2012 19:28
Kontaktdaten:

Re: Base Abfrage: Datum addieren (Date_ADD) und mit DATE_DIFF 'überprüfen'

Beitrag von RobertG »

Hallo F3K Total,

ich war erst einmal irritiert aufgrund des Bezugsdatums 1900-01-01. Im Handbuch habe ich nämlich als Ersatz stehen:

Code: Alles auswählen

SELECT "Datum", DATEDIFF('dd','1899-12-30',"Datum")+21 AS "RueckDatum" FROM "Tabelle"
Das berechnet den Unterschied zum vorgegebenen Datum und gibt eben eine Integer-Zahl aus, die in der Abfrage das korrekte Datum anzeigt.

Öffne ich die Tabelle mit den Integer-Einträgen Deiner Testdatenbank mit LO 4.4.7.2 und stelle als Formatierung für die Werte das Datum ein, dann erhalte ich ein Datum, das nicht mit dem übereinstimmt, das im Formular aufgeführt wird. DATE_INT im Formular zeigt den 3.12.15 an. DATE_INT in der Tabelle zeigt den 1.12.15 an.
Da scheinen wir gerade wieder einen Bug auszugraben, der übrigens genauso in AOO 4.1.2 vorhanden ist.

Gruß

Robert
F3K Total
********
Beiträge: 3704
Registriert: Mo, 28.02.2011 17:49

Re: Base Abfrage: Datum addieren (Date_ADD) und mit DATE_DIFF 'überprüfen'

Beitrag von F3K Total »

Hallo Robert,
ja, das ist mir auch aufgefallen. Witzigerweise fehlen die zwei Tage nur in einem Datumsfeld, was ich deswegen gewählt habe, weil man es "aufklappen" kann.
In einem formatierten Feld, das zum Datum formatiert wurde, funktioniert der 30.12.1899.
Gruß Rik
RobertG
********
Beiträge: 2034
Registriert: Fr, 13.04.2012 19:28
Kontaktdaten:

Re: Base Abfrage: Datum addieren (Date_ADD) und mit DATE_DIFF 'überprüfen'

Beitrag von RobertG »

Hallo Rik,

ich mache dazu eine Bugmeldung bei LO auf - bezogen am besten auf das Datumsfeld im Formular, wenn nicht irgendwer sonst da etwas anders sieht ...

Gruß

Robert
mtsfja
Beiträge: 4
Registriert: So, 22.11.2015 18:49

Re: Base Abfrage: Datum addieren (Date_ADD) und mit DATE_DIFF 'überprüfen'

Beitrag von mtsfja »

Hallo Robert, Hallo Rik,

vielen Dank für die schnelle(n) und hilfreiche(n) Antwort(en).

Gruß
Mattes
Antworten