🙏 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
-
- * LO-Experte *
- Beiträge: 832
- Registriert: Fr 28. Mär 2014, 10:41
Re: Tabelle: Datum automatisch setzen bei neuem Datensatz
Hallo Robert,
gut, dann nehm ich die Eingabemöglichkeit aus dem Formular, ja, CURRENT_TIME hab ich durch Ausprobieren gefunden.
Jetzt habe ich deine Beispieldatenbank gerade angeschaut: Beispiel_Default_Datum_Jetzt.odb
Was brauche ich aus der? Nur das Makro? Was ich nicht verstehe ist, wie das Makro angesprochen wird, im Formularfeld Änderungsdatum finde ich kein Ereignis oder irgendeinen Makroaufruf.
Gruß
Freischreiber
gut, dann nehm ich die Eingabemöglichkeit aus dem Formular, ja, CURRENT_TIME hab ich durch Ausprobieren gefunden.
Jetzt habe ich deine Beispieldatenbank gerade angeschaut: Beispiel_Default_Datum_Jetzt.odb
Was brauche ich aus der? Nur das Makro? Was ich nicht verstehe ist, wie das Makro angesprochen wird, im Formularfeld Änderungsdatum finde ich kein Ereignis oder irgendeinen Makroaufruf.
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 musst Dir das Formular "Defaultdatum_Makro" ansehen. Den Formularnavigator öffnen oder sonst wie an die Eigenschaften des Formulars gehen. Bei den Ereignissen ist "Vor der Datensatzaktion" das Makro angesiedelt. Bevor also der Datensatz gespeichert wird werden die entsprechenden Werte eingetragen. Das Makro wird dann nur bei Neueingaben oder Änderungen aufgerufen, nicht aber bei einfacher Navigation durch die Daten.
Gruß
Robert
Du musst Dir das Formular "Defaultdatum_Makro" ansehen. Den Formularnavigator öffnen oder sonst wie an die Eigenschaften des Formulars gehen. Bei den Ereignissen ist "Vor der Datensatzaktion" das Makro angesiedelt. Bevor also der Datensatz gespeichert wird werden die entsprechenden Werte eingetragen. Das Makro wird dann nur bei Neueingaben oder Änderungen aufgerufen, nicht aber bei einfacher Navigation durch die Daten.
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,
wenn das so tut, wie ich vermute, daß es tun soll, wäre es sensationell.
Im Moment bekomme ich noch Fehlermeldungen wie
BASIC-Laufzeitfehler.
Es ist eine Ausnahme aufgetreten
Type: com.sun.star.container.NoSuchElementException
Message: .
Was muß ich an dem Makro alles anpassen, nur den Namen meines Datumsfeldes oder noch mehr?
Danke
Freischreiber
wenn das so tut, wie ich vermute, daß es tun soll, wäre es sensationell.
Im Moment bekomme ich noch Fehlermeldungen wie
BASIC-Laufzeitfehler.
Es ist eine Ausnahme aufgetreten
Type: com.sun.star.container.NoSuchElementException
Message: .
Was muß ich an dem Makro alles anpassen, nur den Namen meines Datumsfeldes oder noch mehr?
Danke
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,
die Fehlermeldung, die Du bekommst, bleibt bei einer bestimmten Zeile in dem Makrocode stehen. Das entsprechende Feld kommt bei Dir nicht vor:
"MainForm" ist der Name des Formulars, wenn Du den Formularnavigator auf machst.
"datDatum" ist das Datumsfeld für das Erstspeicherdatum.
"datDatumAender" ist das Datumsfeld, in dem die letzte Änderung gespeichert werden soll.
Gruß
Robert
die Fehlermeldung, die Du bekommst, bleibt bei einer bestimmten Zeile in dem Makrocode stehen. Das entsprechende Feld kommt bei Dir nicht vor:
Code: Alles auswählen
oForm = oDrawpage.forms.getByName("MainForm")
oFeld = oForm.getByName("datDatum")
oFeldAender = oForm.getByName("datDatumAender")
"datDatum" ist das Datumsfeld für das Erstspeicherdatum.
"datDatumAender" ist das Datumsfeld, in dem die letzte Änderung gespeichert werden soll.
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,
sorry, wenn ich hier alles zumülle mit meinen Luxusdatumsfeldern, aber mich hat gerade die Begeisterung gepackt.
Dein Makro habe ich gekürzt und mache das Erfassdatum mit der SQL-Methode (wo ich immer noch gerne wissen würde, wo ich diese Ausstattung an der Tabelle erkennen kann, außer an dem Ausfüllen selbst).
Dann habe ich so getan, als würde ich mich mit Makros auskennen und es für die Änderzeit ergänzt:
SUB Datum_aktuell
DIM oDoc AS OBJECT
DIM oDrawpage AS OBJECT
DIM oForm AS OBJECT
DIM oFeldAenderdatum AS OBJECT
DIM oFeldAenderzeit AS OBJECT
DIM unoDate
DIM unoTime
oDoc = thisComponent
oDrawpage = oDoc.drawpage
oForm = oDrawpage.forms.getByName("MainForm")
oFeldAenderdatum = oForm.getByName("datAenderdatum")
unoDate = createUnoStruct("com.sun.star.util.Date")
unoDate.Year = Year(Date)
unoDate.Month = Month(Date)
unoDate.Day = Day(Date)
oFeldAenderdatum.BoundField.updateDate(unoDate)
oFeldAenderzeit = oForm.getByName("timAenderzeit")
unoTime = createUnoStruct("com.sun.star.util.Time")
unoTime.Hours = Hour(Time)
unoTime.Minutes = Minute(Time)
unoTime.Seconds = Second(Time)
oFeldAenderzeit.BoundField.updateTime(unoTime)
END SUB
Ich wollte alles in ein Makro quetschen, weil ich im Formular pro Ereignis wohl nur ein Makro zuweisen kann.
Es funktioniert, ich bin folglich kurz vor dem Überschnappen und habe nur noch eine Frage: Wie kriege ich auch Änderungen in Unterformularen in die Änderungszeit? Soll ich auch dem Unterformular einfach dasselbe Makro für "Vor der Datensatzaktion" zuweisen?
Gruß
Freischreiber
sorry, wenn ich hier alles zumülle mit meinen Luxusdatumsfeldern, aber mich hat gerade die Begeisterung gepackt.
Dein Makro habe ich gekürzt und mache das Erfassdatum mit der SQL-Methode (wo ich immer noch gerne wissen würde, wo ich diese Ausstattung an der Tabelle erkennen kann, außer an dem Ausfüllen selbst).
Dann habe ich so getan, als würde ich mich mit Makros auskennen und es für die Änderzeit ergänzt:
SUB Datum_aktuell
DIM oDoc AS OBJECT
DIM oDrawpage AS OBJECT
DIM oForm AS OBJECT
DIM oFeldAenderdatum AS OBJECT
DIM oFeldAenderzeit AS OBJECT
DIM unoDate
DIM unoTime
oDoc = thisComponent
oDrawpage = oDoc.drawpage
oForm = oDrawpage.forms.getByName("MainForm")
oFeldAenderdatum = oForm.getByName("datAenderdatum")
unoDate = createUnoStruct("com.sun.star.util.Date")
unoDate.Year = Year(Date)
unoDate.Month = Month(Date)
unoDate.Day = Day(Date)
oFeldAenderdatum.BoundField.updateDate(unoDate)
oFeldAenderzeit = oForm.getByName("timAenderzeit")
unoTime = createUnoStruct("com.sun.star.util.Time")
unoTime.Hours = Hour(Time)
unoTime.Minutes = Minute(Time)
unoTime.Seconds = Second(Time)
oFeldAenderzeit.BoundField.updateTime(unoTime)
END SUB
Ich wollte alles in ein Makro quetschen, weil ich im Formular pro Ereignis wohl nur ein Makro zuweisen kann.
Es funktioniert, ich bin folglich kurz vor dem Überschnappen und habe nur noch eine Frage: Wie kriege ich auch Änderungen in Unterformularen in die Änderungszeit? Soll ich auch dem Unterformular einfach dasselbe Makro für "Vor der Datensatzaktion" zuweisen?
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,
um an das Unterformular ran zu kommen musst Du die Felder des Unterformulars entsprechend ansteuern.
ist das Hauptformular. Wenn Du mit dem Assistenten Formulare erstellst, dann heißt das Unterformular vermutlich SubForm:
Du sprichst also das Unterformular genauso an wie irgendwelche Formularfelder.
Du kannst übrigens sehr wohl mehrere Makros mit dem gleichen Ereignis verbinden.
Was Du über SQL als Datum und Zeit vorgegeben hast, das kannst Du erst sehen, wenn ein neuer Datensatz abgespeichert wird. Dann kommt der Eintrag in das Datumsfeld. Am besten zu sehen ist so etwas, wenn Du direkt in der Tabelle einen neuen Datensatz gründest. Beim Abspeichern steht dann das aktuelle Datum da.
Gruß
Robert
um an das Unterformular ran zu kommen musst Du die Felder des Unterformulars entsprechend ansteuern.
Code: Alles auswählen
oForm = oDrawpage.forms.getByName("MainForm")
Code: Alles auswählen
oForm = oDrawpage.forms.getByName("MainForm")
oSubForm = oForm.getByName("SubForm")
Du kannst übrigens sehr wohl mehrere Makros mit dem gleichen Ereignis verbinden.
Code: Alles auswählen
SUB DatumAktuell
...
END SUB
SUB ZeitAktuell
...
END SUB
SUB DatumUndZeitAktuell
DatumAktuell
ZeitAktuell
END SUB
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,
danke für den Tip mit der "Makroaddition".
Aber das mit den Unterformularen mache ich tatsächlich so, daß auch eine Datensatzaktion im Unterformular das eine und einzige Datumsmakro auslöst. Denn nur im Hauptformular (zur Adressentabelle) gibt es Felder für Änderdatum und Änderzeit, und nur dort sind die Änderungen interessant.
Was ich nicht ganz verstehe: Warum wird das Makro VOR der Datensatzaktion ausgelöst und nicht danach? Eigentlich kann es doch nach dem Speichern erst wissen, daß gespeichert wurde?
Gruß und vielen Dank
Freischreiber
danke für den Tip mit der "Makroaddition".
Aber das mit den Unterformularen mache ich tatsächlich so, daß auch eine Datensatzaktion im Unterformular das eine und einzige Datumsmakro auslöst. Denn nur im Hauptformular (zur Adressentabelle) gibt es Felder für Änderdatum und Änderzeit, und nur dort sind die Änderungen interessant.
Was ich nicht ganz verstehe: Warum wird das Makro VOR der Datensatzaktion ausgelöst und nicht danach? Eigentlich kann es doch nach dem Speichern erst wissen, daß gespeichert wurde?
Gruß und vielen Dank
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 Makro ändert den Inhalt eines Formularfeldes bzw. des darunterliegenden Feldes der Tabelle, in der abgespeichert werden muss. Diese Änderung muss geschehen, bevor die weiteren Aktionen laufen. Sonst wird der Inhalt mit dem kommenden Datensatz und nicht mit dem aktuellen gespeichert. Der interne Ablauf ist so:
Du änderst Daten in einem Datensatz. Du gehst einen Datensatz weiter. Es wird das Ereignis "Vor der Datensatzaktion" ausgelöst. Hänge einfach einmal eine Makro mit nur einer msgbox rein (msgbox "Hallo"). Dann siehst Du: Der Datensatzwechsel ist nicht vollzogen, bis Du die Messagebox geschlossen hast. "Vor der Datensatzaktion" kann also z.B. auch eine Fehleingabe noch abgefangen werden. "Nach der Datensatzaktion" ist in diesem Fall nach dem Datensatzwechsel. Da wird dann der nächste Datensatz bearbeitet.
Gruß
Robert
das Makro ändert den Inhalt eines Formularfeldes bzw. des darunterliegenden Feldes der Tabelle, in der abgespeichert werden muss. Diese Änderung muss geschehen, bevor die weiteren Aktionen laufen. Sonst wird der Inhalt mit dem kommenden Datensatz und nicht mit dem aktuellen gespeichert. Der interne Ablauf ist so:
Du änderst Daten in einem Datensatz. Du gehst einen Datensatz weiter. Es wird das Ereignis "Vor der Datensatzaktion" ausgelöst. Hänge einfach einmal eine Makro mit nur einer msgbox rein (msgbox "Hallo"). Dann siehst Du: Der Datensatzwechsel ist nicht vollzogen, bis Du die Messagebox geschlossen hast. "Vor der Datensatzaktion" kann also z.B. auch eine Fehleingabe noch abgefangen werden. "Nach der Datensatzaktion" ist in diesem Fall nach dem Datensatzwechsel. Da wird dann der nächste Datensatz bearbeitet.
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 habs probiert, das Ausführen "nach der Datensatzaktion" ändert das Änderdatum auch, das erfolgt wohl unmittelbar nach dem Datensatzwechsel:
https://help.libreoffice.org/Common/Eve ... satzaktion
Und ist es so nicht sinnvoller? Sonst wird ein neues Änderungsdatum auch eingetragen, wenn der Datensatzwechsel scheitert, z. B. wegen einer Integritätsverletzung oder einer Falscheingabe.
Gruß
Freischreiber
ich habs probiert, das Ausführen "nach der Datensatzaktion" ändert das Änderdatum auch, das erfolgt wohl unmittelbar nach dem Datensatzwechsel:
https://help.libreoffice.org/Common/Eve ... satzaktion
Und ist es so nicht sinnvoller? Sonst wird ein neues Änderungsdatum auch eingetragen, wenn der Datensatzwechsel scheitert, z. B. wegen einer Integritätsverletzung oder einer Falscheingabe.
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
-
- * LO-Experte *
- Beiträge: 832
- Registriert: Fr 28. Mär 2014, 10:41
Re: Tabelle: Datum automatisch setzen bei neuem Datensatz
Ah, okay, das geht so doch nicht. Wenn man das Makro nach dem Speichern ausführen läßt, behauptet Base beim Schließen des Formularfensters, der Datensatz sei geändert worden, ob es das speichern soll... lästig.
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
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.