🙏 Helfen Sie jetzt mit, unser LibreOffice Forum zu erhalten! 🙏
Mit Ihrer Spende sichern Sie den Fortbestand, den Ausbau und die laufenden Kosten dieses Forums. 🌱

🍀 Jeder Beitrag zählt – vielen Dank für Ihre Unterstützung!🍀

❤️ DANKE >> << DANKE ❤️

>> Dank Ihrer Unterstützung -> Keine Werbung für alle registrierten LibreOffice-Forum User! <<
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗

Default Current Date, wenn Datensatz schon existiert?

Base ermöglicht es Ihnen, Ihre Daten in einer Datenbank direkt mit LibreOffice zu bearbeiten.
Freischreiber
* LO-Experte *
Beiträge: 832
Registriert: Fr 28. Mär 2014, 10:41

Default Current Date, wenn Datensatz schon existiert?

Beitrag von Freischreiber » Mo 26. Jan 2015, 18:45

Hallo,

in einer Auftragstabelle würde ich gerne ein automatisches Datumsfeld einrichten, das das aktuelle Tagesdatum erhält, wenn sich nur ein bestimmtes Feld eines schon bestehenden Datensatzes ändert.

Der Datensatz existiert also bereits, mit

Code: Alles auswählen

ALTER table ... alter column "Anlegedatum" set DEFAULT CURRENT_DATE
wird auch das Anlegedatum des Auftrags automatisch ausgefüllt bei Erstellung der Zeile, aber wie kann ich das mit dem Beendigungsdatum in der schon existierenden Auftragszeile schaffen?

Gruß
Freischreiber
Freischreiber nutzt seit 1/2025 LibreOffice Version 7.2.7.2 unter Windows 11 und SplitDB mit HSQL 2.7.4.
Lesenswert: https://wiki.documentfoundation.org/ReleasePlan/de

RobertG
* LO-Experte *
Beiträge: 2884
Registriert: Sa 19. Mai 2012, 17:37
Kontaktdaten:

Re: Default Current Date, wenn Datensatz schon existiert?

Beitrag von RobertG » Mo 26. Jan 2015, 19:35

Hallo Freischreiber,

geht nicht über SQL. Alle dort festgelegten Default-Werte gelten bei der Erstellung des Datensatzes, nicht bei einer Änderung.

Schau einmal (noch) in meinem Ordner zur Weiterentwicklung des Handbuchs nach. Da ist eine Datenbank zu Defaultdatum und Defaultzeit dabei. Die ist auch in "Base_Beispiel_V44" erklärt.

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

F3K Total
* LO-Experte *
Beiträge: 2501
Registriert: So 10. Apr 2011, 10:10

Re: Default Current Date, wenn Datensatz schon existiert?

Beitrag von F3K Total » Mo 26. Jan 2015, 20:06

Hallo Freischreiber,
wir hatten bereits ein ähnliches Thema, hier.
Wenn Du deine Datenbank bereits getrennt hast, kannst du einen Trigger verwenden.
BSP:
Wenn sich in Tabelle T1 in Spalte N2 etwas ändert, wird in TS der aktuelle Timestamp eingetragen

Code: Alles auswählen

CREATE TRIGGER INSERT_DATE
    BEFORE UPDATE ON T1
    REFERENCING OLD ROW AS OLDROW NEW ROW AS NEWROW
    FOR EACH ROW WHEN (OLDROW.N2 <> NEWROW.N2)
        BEGIN ATOMIC
           SET NEWROW.TS = CURRENT_TIMESTAMP;
        END
Habe ich gerade ausprobiert, funktioniert einwandfrei.
EDIT: Wenn du noch eine Spalte U hinzufügst, trägt dieser TRIGGER zusätzlich noch den aktuellen User in Spalte U ein:

Code: Alles auswählen

CREATE TRIGGER INSERT_DATE_USER
    BEFORE UPDATE ON T1
    REFERENCING OLD ROW AS OLDROW NEW ROW AS NEWROW
    FOR EACH ROW WHEN (OLDROW.N2 <> NEWROW.N2)
        BEGIN ATOMIC
           SET NEWROW.TS = CURRENT_TIMESTAMP;
           SET NEWROW.U = CURRENT_USER;
        END
Gruß R
Windows 11: AOO, LO Linux Mint: AOO, LO

Freischreiber
* LO-Experte *
Beiträge: 832
Registriert: Fr 28. Mär 2014, 10:41

Re: Default Current Date, wenn Datensatz schon existiert?

Beitrag von Freischreiber » Mi 28. Jan 2015, 11:29

Hallo allerseits,

@RobertG:
:roll: Ertappt, dein Datum-Aktuell-Makro läuft bei mir ja schon lange, für Änderungen in der Kundentabelle...
Hier könnte ich es an das Ereignis "Text modifiziert" des betreffenden Felds koppeln, oder?

@F3K Total:
Den Trigger habe ich angepaßt und ausprobiert, nämlich so:

Code: Alles auswählen

CREATE TRIGGER ABLAGEDATUM
    BEFORE UPDATE ON "t-auftraege"
    REFERENCING OLD ROW AS OLDROW NEW ROW AS NEWROW
    FOR EACH ROW WHEN (OLDROW."Offen" <> NEWROW."Offen")
        BEGIN ATOMIC
           SET NEWROW."Enddatum" = CURRENT_DATE;
        END
Das wäre mir, weil es unabhängig vom Formular geht, auch lieber als ein Makro, aber es gibt keine Reaktion in meiner Tabelle...
Kann man so einen einmal angelegten Triggger eigentlich auch ändern oder löschen?

Gruß
Freischreiber
Freischreiber nutzt seit 1/2025 LibreOffice Version 7.2.7.2 unter Windows 11 und SplitDB mit HSQL 2.7.4.
Lesenswert: https://wiki.documentfoundation.org/ReleasePlan/de

F3K Total
* LO-Experte *
Beiträge: 2501
Registriert: So 10. Apr 2011, 10:10

Re: Default Current Date, wenn Datensatz schon existiert?

Beitrag von F3K Total » Mi 28. Jan 2015, 16:40

Hi,
nur Löschen und neu anlegen

Code: Alles auswählen

Drop Trigger <Triggername>
R
Windows 11: AOO, LO Linux Mint: AOO, LO

Freischreiber
* LO-Experte *
Beiträge: 832
Registriert: Fr 28. Mär 2014, 10:41

Re: Default Current Date, wenn Datensatz schon existiert?

Beitrag von Freischreiber » Mi 28. Jan 2015, 16:57

Hi,

okay, hab gelöscht und neu angelegt, mal ohne Anführungszeichen (geht nicht), mal mit CURRENT_TIMESTAMP statt CURRENT_DATE, aber keine Reaktion.
In meinem Feld erscheint kein Datum...

Weiß du, an was das liegen könnte?

Gruß
Freischreiber
Freischreiber nutzt seit 1/2025 LibreOffice Version 7.2.7.2 unter Windows 11 und SplitDB mit HSQL 2.7.4.
Lesenswert: https://wiki.documentfoundation.org/ReleasePlan/de

F3K Total
* LO-Experte *
Beiträge: 2501
Registriert: So 10. Apr 2011, 10:10

Re: Default Current Date, wenn Datensatz schon existiert?

Beitrag von F3K Total » Mi 28. Jan 2015, 16:59

HSQLDB 2.3.2?
Ist Enddate ein DATE Field?
Windows 11: AOO, LO Linux Mint: AOO, LO

Freischreiber
* LO-Experte *
Beiträge: 832
Registriert: Fr 28. Mär 2014, 10:41

Re: Default Current Date, wenn Datensatz schon existiert?

Beitrag von Freischreiber » Mi 28. Jan 2015, 17:06

Hi!

Ja und ja, 2.3.2 und Datum [DATE]...

Gruß
Freischreiber
Freischreiber nutzt seit 1/2025 LibreOffice Version 7.2.7.2 unter Windows 11 und SplitDB mit HSQL 2.7.4.
Lesenswert: https://wiki.documentfoundation.org/ReleasePlan/de

F3K Total
* LO-Experte *
Beiträge: 2501
Registriert: So 10. Apr 2011, 10:10

Re: Default Current Date, wenn Datensatz schon existiert?

Beitrag von F3K Total » Mi 28. Jan 2015, 17:11

... und es passiert, wenn du direkt in der Tabelle "t-auftraege"
in der Spalte "Offen" etwas änderst, dann speichern drückst, nix in Spalte "Enddatum"?
Unglaublich.
Welchen Typ hat "Offen"?
Windows 11: AOO, LO Linux Mint: AOO, LO

Freischreiber
* LO-Experte *
Beiträge: 832
Registriert: Fr 28. Mär 2014, 10:41

Re: Default Current Date, wenn Datensatz schon existiert?

Beitrag von Freischreiber » Mi 28. Jan 2015, 17:15

Auweia, peinlich... ich hab mich mit der Tabulaturtaste durch den letzten Datensatz bewegt...
mit der Speichern-Taste ohne Anspringen des Datumsfelds gehts :oops:

Danke!
Freischreiber nutzt seit 1/2025 LibreOffice Version 7.2.7.2 unter Windows 11 und SplitDB mit HSQL 2.7.4.
Lesenswert: https://wiki.documentfoundation.org/ReleasePlan/de


An alle, die das LibreOffice-Forum gern nutzen und unterstützen wollen:


Bitte helfen Sie uns mit 7 Euro pro Monat.
Durch Ihren Beitrag tragen Sie dazu bei, unsere laufenden Kosten für die kommenden Monate zu decken.
Unkompliziert per Kreditkarte oder PayPal.
Als ein kleines Dankeschön werden Sie im LO-Forum als SUPPORTER gekennzeichnet.



Antworten