Datenbankfelder Automatisch füllen

Datenbanklösungen mit AOO/LO

Moderator: Moderatoren

NewWave
Beiträge: 4
Registriert: Di, 25.08.2009 11:01

Datenbankfelder Automatisch füllen

Beitrag von NewWave »

Hi,

ich habe in Base ein Tabelle erstellt in der ein Datum eingetragen werden soll und das zweite Datum soll dann automatisch Berechnet werden und eingetragen.
Wollte dies über ein Forumular realisieren, finde aber nicht passendes dazu. Makro ist im Moment für mich noch Bahnhof :D

MfG

Wave
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: Datenbankfelder Automatisch füllen

Beitrag von komma4 »

Willkommen im Forum.

Warum erwähnst Du das erste Datum?
Nach welchen Regeln soll das zweite Datum berechnet werden?

Welche Datenbank-engine? Welche OOo Version?
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
NewWave
Beiträge: 4
Registriert: Di, 25.08.2009 11:01

Re: Datenbankfelder Automatisch füllen

Beitrag von NewWave »

Hi,

das erste Datum soll ja die Grundlage der Berechnung darstellen. Nach etwas such hier im Forum habe ich mich dann entschieden es beim Anzeigen des Datensatzes
durch einen SQL - Befehl berechnen zu lassen. Es sollte immer genau ein Jahr später sein. Jedoch ist noch die Frage inwiefern es möglich ist, dass das ermittelte Datum kein Samstag oder Sonntag ist.

Code: Alles auswählen

SELECT "Dletzt",
CONVERT( YEAR("Dletzt") || '-' || MONTH("Dletzt")+12 || '-' || DAY("Dletzt"), DATE) AS "Dneu"
FROM "Tabelle"
OOo Version 3.1.0.
Datenbank ist in OOo Base

MfG

Wave
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: Datenbankfelder Automatisch füllen

Beitrag von komma4 »

Wenn das zweite Datum immer berechnet wird, dann ist es im Sinne der Normalisierung völlig korrekt den Wert nicht auch noch zu speichern.


Verstehe ich Dich richtig, dass dieses Datum dann nicht auf's Wochenende fallen soll?

So etwas erreichst Du dann durch Kombination eines CASE WHEN Konstrukts und der bei HSQLDB eingebauten DAYNAME-Funktion - Beispiele für's Erstere habe ich hier schon gesehen.

Viel Erfolg!


Link zur HSQLDB-Dokumentation
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
NewWave
Beiträge: 4
Registriert: Di, 25.08.2009 11:01

Re: Datenbankfelder Automatisch füllen

Beitrag von NewWave »

Hi,

danke für den CASE WENN Tipp.

Edit: Hier nun meine Lösung:

Code: Alles auswählen

SELECT "Dletzt", 
CASE 
	When DAYNAME(CONVERT( YEAR("Dletzt") || '-' || MONTH("Dletzt") || '-' || DAY("Dletzt")+365.25, DATE)) = 'Saturday' 
		Then CONVERT( YEAR("Dletzt") || '-' || MONTH("Dletzt") || '-' || DAY("Dletzt")+367.25, DATE)
	When DAYNAME(CONVERT( YEAR("Dletzt") || '-' || MONTH("Dletzt") || '-' || DAY("Dletzt")+365.25, DATE)) = 'Sunday'
		Then CONVERT( YEAR("Dletzt") || '-' || MONTH("Dletzt") || '-' || DAY("Dletzt")+366.25, DATE)
	ELSE CONVERT( YEAR("Dletzt") || '-' || MONTH("Dletzt") || '-' || DAY("Dletzt")+365.25, DATE)
END  as "Dneu"

FROM "Begehungen"
Für Tipps zur Vereinfachung bin ich dankbar, aber erstmal froh das ich es nach vielem Suchen und Testen hinbekommen habe.

MfG
Antworten