🙏 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!🍀
>> Dank Ihrer Unterstützung -> Keine Werbung für alle registrierten LibreOffice-Forum User! <<
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗
Tabelle: Datum automatisch setzen bei neuem Datensatz
Tabelle: Datum automatisch setzen bei neuem Datensatz
Hallo,
wenn ich in der Tabelle einen neuen Datensatz anlege, soll in einem weiteren Feld das aktuelle Tagesdatum gesetzt werden.
Wie mache ich das, das als Default das Tagesdatum reingeschrieben wird.
Vielen Dank
Helmut
wenn ich in der Tabelle einen neuen Datensatz anlege, soll in einem weiteren Feld das aktuelle Tagesdatum gesetzt werden.
Wie mache ich das, das als Default das Tagesdatum reingeschrieben wird.
Vielen Dank
Helmut
Re: Tabelle: Datum automatisch setzen bei neuem Datensatz
Die eingebaute Funktion für das aktuelle Datum heißt CURDATE().
Details kannst du im Base Handbuch nachlesen.
Gruß
lorbass
Details kannst du im Base Handbuch nachlesen.
Gruß
lorbass
Re: Tabelle: Datum automatisch setzen bei neuem Datensatz
Hallo lorbass,lorbass hat geschrieben:Die eingebaute Funktion für das aktuelle Datum heißt CURDATE().
Details kannst du im Base Handbuch nachlesen.
Gruß
lorbass
ich verstehe aber nicht warum Base im Entwurfsmodus der Tabelle das als Defaultwert nicht übernimmt?
Gruß Helmut
Re: Tabelle: Datum automatisch setzen bei neuem Datensatz
Hallo Helmut,
hier zusammenkopiert aus dem Handbuch V4.2:
Also: Zuerst die Tabelle erstellen, dann anschließend per SQL die Tabelle für den Datumsbereich ändern. Der Defaultwert wird beim Speichern gesetzt, wenn keine Eingabe gemacht wurde.
Willst Du einen Wert vorher im Formular sehen, der dem aktuellen Datum entspricht, so geht dies entweder unter Zuhilfenahme einer Abfrage, deren Datumswert Du an das Formular weiterreichst, oder mit einem Makro.
Werte im Tabellendesign sind Werte, die beim Aufruf der Tabelle dort stehen. Sich verändernde Werte sind da nicht vorgesehen.
Wenn Du tatsächlich sicher stellen willst, dass als Datum das Speicherdatum steht, dann ist der Default-Wert der Datenbank über SQL der beste Weg.
Gruß
Robert
hier zusammenkopiert aus dem Handbuch V4.2:
(S. 56)Defaultwert: Der Begriff «Defaultwert» in der GUI entspricht nicht dem, was Datenbanknutzer unter Defaultwert verstehen. Die GUI gibt hier einen bestimmten Wert sichtbar vor, der dann mit abgespeichert wird.
Der Defaultwert einer Datenbank wird in der Tabellendefinition gespeichert. Er wird dann in das Feld geschrieben, wenn es bei der neuen Erstellung eines Datensatzes leer bleibt. SQL-Defaultwerte erscheinen auch nicht bei der Bearbeitung der Eigenschaften einer Tabelle.
(S. 64)SQL-Funktionen, die erlaubt sind:
für das aktuelle Datum - CURRENT_DATE, TODAY
(S. 66)ALTER TABLE "Tabellenname" ALTER COLUMN "Feldname" SET DEFAULT <Standardwert>;
Fügt dem Feld einen bestimmten Standardwert hinzu. NULL entfernt einen bestehenden Standardwert.
Also: Zuerst die Tabelle erstellen, dann anschließend per SQL die Tabelle für den Datumsbereich ändern. Der Defaultwert wird beim Speichern gesetzt, wenn keine Eingabe gemacht wurde.
Willst Du einen Wert vorher im Formular sehen, der dem aktuellen Datum entspricht, so geht dies entweder unter Zuhilfenahme einer Abfrage, deren Datumswert Du an das Formular weiterreichst, oder mit einem Makro.
Werte im Tabellendesign sind Werte, die beim Aufruf der Tabelle dort stehen. Sich verändernde Werte sind da nicht vorgesehen.
Wenn Du tatsächlich sicher stellen willst, dass als Datum das Speicherdatum steht, dann ist der Default-Wert der Datenbank über SQL der beste Weg.
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
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare
-
- * LO-Experte *
- Beiträge: 832
- Registriert: Fr 28. Mär 2014, 10:41
Re: Tabelle: Datum automatisch setzen bei neuem Datensatz
Hallo,
ich suche eine ähnliche Funktion, und zwar soll eine Adressen-Tabelle zwei Felder enthalten, wo 1. das Erstelldatum des einzelnen Datensatzes und 2. das letzte Änderungsdatum des einzelnen Datensatzets gespeichert werden sollen, und zwar innerhalb der Tabelle.
Geht das mit diesen SQL-Befehlen?
Und: Wendet man die direkt über Base - Extras - SQL auf die Tabelle an?
Ziel ist, bei jeder Adresse genau ablesen zu können, wann sie aufgenommen wurde und wann sie geändert wurde.
Gruß
Freischreiber
ich suche eine ähnliche Funktion, und zwar soll eine Adressen-Tabelle zwei Felder enthalten, wo 1. das Erstelldatum des einzelnen Datensatzes und 2. das letzte Änderungsdatum des einzelnen Datensatzets gespeichert werden sollen, und zwar innerhalb der Tabelle.
Geht das mit diesen SQL-Befehlen?
Und: Wendet man die direkt über Base - Extras - SQL auf die Tabelle an?
Ziel ist, bei jeder Adresse genau ablesen zu können, wann sie aufgenommen wurde und wann sie geändert wurde.
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
Lesenswert: https://wiki.documentfoundation.org/ReleasePlan/de
Re: Tabelle: Datum automatisch setzen bei neuem Datensatz
Hallo Freischreiber,
über die Tabellendefinition (mittels Extras → SQL) geht nur das Einfügen des momentanen Systemdatums beim Einfügen neuer Daten, nicht beim Ändern eines Datensatzes. Dies reicht also für das Erstelldatum aus, nicht aber das letzte Änderungsdatum. Das letzte Änderungsdatum wirst Du über eine Formulare - Unterformular - Konstruktion oder über Makros automatisch einfügen können. Manuell geht das natürlich auch. Wenn Du das Datumsauswahlfeld nimmst, dann steht da ein Button "Heute" in der Auswahl.
Ich kopiere hier einmal den Inhalt aus dem Handbuch, 4.2, S.290
Gruß
Robert
über die Tabellendefinition (mittels Extras → SQL) geht nur das Einfügen des momentanen Systemdatums beim Einfügen neuer Daten, nicht beim Ändern eines Datensatzes. Dies reicht also für das Erstelldatum aus, nicht aber das letzte Änderungsdatum. Das letzte Änderungsdatum wirst Du über eine Formulare - Unterformular - Konstruktion oder über Makros automatisch einfügen können. Manuell geht das natürlich auch. Wenn Du das Datumsauswahlfeld nimmst, dann steht da ein Button "Heute" in der Auswahl.
Ich kopiere hier einmal den Inhalt aus dem Handbuch, 4.2, S.290
Über die Arbeit mit einer Filtertabelle und die damit verbundenen Möglichkeiten steht einiges ab S. 147 im Kapitel "Formulare".Inhalt eines Kontrollfelds ändern
Wenn es um die Änderung eines einzelnen Wertes geht, wird das über die Eigenschaft BoundField des Kontrollfelds mit einer passenden Methode erledigt. Anschließend muss nur noch die Änderung an die Datenbank weitergegeben werden. Beispiel für ein Datumsfeld, in das das aktuelle Datum eingetragen werden soll:Für BoundField wird diejenige der updateXxx-Methoden aufgerufen, die zum Datentyp des Feldes passt – hier geht es um einen Date-Wert. Als Argument wird der gewünschte Wert übergeben – hier das aktuelle Datum, konvertiert in die vom Makro benötigte Schreibweise.Code: Alles auswählen
DIM unoDate AS NEW com.sun.star.util.Date unoDate.Year = Year(Date) unoDate.Month = Month(Date) unoDate.Day = Day(Date) oDateField.BoundField.updateDate( unoDate ) oForm.updateRow() ' Weitergabe der Änderung an die Datenbank
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
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare
-
- * LO-Experte *
- Beiträge: 832
- Registriert: Fr 28. Mär 2014, 10:41
Re: Tabelle: Datum automatisch setzen bei neuem Datensatz
Hallo Robert,
ich verstehe schon das erste nicht.
Ich richte in der Tabelle eine zusätzliche Spalte "LO-Erfassdatum" ein und gebe ihr den Datentyp "Datum(Date)". Ist das so richtig?
Dann speichere ich den Tabellenentwurf und gebe unter Extras - SQL ein:
ALTER TABLE "t-adressen" ALTER COLUMN "LO-Erfassdatum" SET DEFAULT <CURRENT_DATE>
Und bekomme als Meldung:
1: Wrong data type or data too long in DEFAULT clause: < in statement [ALTER TABLE "t-adressen" ALTER COLUMN "LO-Erfassdatum" SET DEFAULT <]
Dann habe ich versucht, der neuen Spalte im Bearbeiten-Modus einen Default-Wert zu geben, nämlich wieder CURRENT_DATE. Da scheitert aber schon das Speichern, die Zelle wird dabei immer wieder geleert.
Es kann doch nicht sein, daß ich da etwas falsch gemacht habe, oder?
Gruß
Freischreiber
ich verstehe schon das erste nicht.
Ich richte in der Tabelle eine zusätzliche Spalte "LO-Erfassdatum" ein und gebe ihr den Datentyp "Datum(Date)". Ist das so richtig?
Dann speichere ich den Tabellenentwurf und gebe unter Extras - SQL ein:
ALTER TABLE "t-adressen" ALTER COLUMN "LO-Erfassdatum" SET DEFAULT <CURRENT_DATE>
Und bekomme als Meldung:
1: Wrong data type or data too long in DEFAULT clause: < in statement [ALTER TABLE "t-adressen" ALTER COLUMN "LO-Erfassdatum" SET DEFAULT <]
Dann habe ich versucht, der neuen Spalte im Bearbeiten-Modus einen Default-Wert zu geben, nämlich wieder CURRENT_DATE. Da scheitert aber schon das Speichern, die Zelle wird dabei immer wieder geleert.
Es kann doch nicht sein, daß ich da etwas falsch gemacht habe, oder?

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
Lesenswert: https://wiki.documentfoundation.org/ReleasePlan/de
Re: Tabelle: Datum automatisch setzen bei neuem Datensatz
Hallo Freischreiber,
Das ganze ohne die <Einklammerung>, die nur darauf hinweisen soll, dass hier irgendein Wert einzugeben ist. Schließlich kannst Du auch etwas anderes als das momentane Datum eingeben.
Ich habe jetzt direkt das meist gesuchte Beispiel mit dem Standarddatum im Handbuch unter die allgemeine Formulierung angefügt.
Nur bringt Dich diese Richtung nicht weiter, da Du einen Weg suchst, das aktuelle Datum automatisch bei Änderungen zu setzen. Ich habe da gerade noch die entsprechenden Beispieldatenbank erweitert und ein entsprechendes Makro angepasst. Auf anderen Wegen habe ich das nicht so einfach hin bekommen.
Du findest die aktuelle Fassung der entsprechenden Beispieldatenbank zur Zeit hier:
http://robert.familiegrosskopf.de/lo_hb_dev/
Gruß
Robert
Code: Alles auswählen
ALTER TABLE "t-adressen" ALTER COLUMN "LO-Erfassdatum" SET DEFAULT CURRENT_DATE
Ich habe jetzt direkt das meist gesuchte Beispiel mit dem Standarddatum im Handbuch unter die allgemeine Formulierung angefügt.
Nur bringt Dich diese Richtung nicht weiter, da Du einen Weg suchst, das aktuelle Datum automatisch bei Änderungen zu setzen. Ich habe da gerade noch die entsprechenden Beispieldatenbank erweitert und ein entsprechendes Makro angepasst. Auf anderen Wegen habe ich das nicht so einfach hin bekommen.
Du findest die aktuelle Fassung der entsprechenden Beispieldatenbank zur Zeit hier:
http://robert.familiegrosskopf.de/lo_hb_dev/
Gruß
Robert
Zuletzt geändert von RobertG am Fr 2. Mai 2014, 17:32, insgesamt 1-mal geändert.
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
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare
-
- * LO-Experte *
- Beiträge: 832
- Registriert: Fr 28. Mär 2014, 10:41
Re: Tabelle: Datum automatisch setzen bei neuem Datensatz
Hallo Robert,
danke, ich habs grad selbst gemerkt, die Klammern waren falsch...
doch, das hilft mir schon sehr weiter, da meine ersten 1200 Datensätze aus der alten Adressdatenbank alle ein Feld Erfassdatum und Erfasszeit haben, und zusätzlich Änderdatum und Änderzeit. Zumindest die ersten beiden werden jetzt weitergeführt.
Ist es richtig, daß diese Felder am besten im Formular gar nicht auftauchen, weil sie nur dann automatisch arbeiten, wenn man sie manuell leer läßt?
Und eine Frage noch: Kann ich der Tabelle irgendwie ansehen, daß ich diese SQL-Befehle auf sie angewendet habe? Im Bearbeiten-Modus sehe ich den Feldern diese Automatik nicht an.
Gruß
Freischreiber
danke, ich habs grad selbst gemerkt, die Klammern waren falsch...
doch, das hilft mir schon sehr weiter, da meine ersten 1200 Datensätze aus der alten Adressdatenbank alle ein Feld Erfassdatum und Erfasszeit haben, und zusätzlich Änderdatum und Änderzeit. Zumindest die ersten beiden werden jetzt weitergeführt.
Ist es richtig, daß diese Felder am besten im Formular gar nicht auftauchen, weil sie nur dann automatisch arbeiten, wenn man sie manuell leer läßt?
Und eine Frage noch: Kann ich der Tabelle irgendwie ansehen, daß ich diese SQL-Befehle auf sie angewendet habe? Im Bearbeiten-Modus sehe ich den Feldern diese Automatik nicht an.
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
Lesenswert: https://wiki.documentfoundation.org/ReleasePlan/de
Re: Tabelle: Datum automatisch setzen bei neuem Datensatz
Hallo Freischreiber,
Du kannst die Felder ruhig im Formular anzeigen - nur eben schreibgeschützt und ohne Tabstop. Eine Änderung erfolgt aber nur beim Einfügen neuer Datensätze, wenn in dem Fall der Datumswert leer ist.
Die Änderung hast Du damit nicht im Griff.
Die Zeitwerte kannst Du entsprechend anpassen:
Robert
Du kannst die Felder ruhig im Formular anzeigen - nur eben schreibgeschützt und ohne Tabstop. Eine Änderung erfolgt aber nur beim Einfügen neuer Datensätze, wenn in dem Fall der Datumswert leer ist.
Die Änderung hast Du damit nicht im Griff.
Die Zeitwerte kannst Du entsprechend anpassen:
GrußSQL-Funktionen, die erlaubt sind:
für das aktuelle Datum - CURRENT_DATE, TODAY
für die aktuelle Zeit - CURRENT_TIME, NOW
für den aktuellen Datums-Zeit-Wert - CURRENT_TIMESTAMP, NOW.
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
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare
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.