🙏 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. 🤗

Tabelle: Datum automatisch setzen bei neuem Datensatz

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

Re: Tabelle: Datum automatisch setzen bei neuem Datensatz

Beitrag von Freischreiber » Fr 2. Mai 2014, 17:42

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
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: Tabelle: Datum automatisch setzen bei neuem Datensatz

Beitrag von RobertG » Fr 2. Mai 2014, 17:49

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
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

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

Re: Tabelle: Datum automatisch setzen bei neuem Datensatz

Beitrag von Freischreiber » Fr 2. Mai 2014, 17:59

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
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: Tabelle: Datum automatisch setzen bei neuem Datensatz

Beitrag von RobertG » Fr 2. Mai 2014, 18:19

Hallo Freischreiber,

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")	
"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
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

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

Re: Tabelle: Datum automatisch setzen bei neuem Datensatz

Beitrag von Freischreiber » Fr 2. Mai 2014, 18:42

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
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: Tabelle: Datum automatisch setzen bei neuem Datensatz

Beitrag von RobertG » Fr 2. Mai 2014, 18:59

Hallo Freischreiber,

um an das Unterformular ran zu kommen musst Du die Felder des Unterformulars entsprechend ansteuern.

Code: Alles auswählen

oForm = oDrawpage.forms.getByName("MainForm") 
ist das Hauptformular. Wenn Du mit dem Assistenten Formulare erstellst, dann heißt das Unterformular vermutlich SubForm:

Code: Alles auswählen

oForm = oDrawpage.forms.getByName("MainForm") 
oSubForm = oForm.getByName("SubForm")
Du sprichst also das Unterformular genauso an wie irgendwelche Formularfelder.

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
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
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

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

Re: Tabelle: Datum automatisch setzen bei neuem Datensatz

Beitrag von Freischreiber » Fr 2. Mai 2014, 19:25

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
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: Tabelle: Datum automatisch setzen bei neuem Datensatz

Beitrag von RobertG » Fr 2. Mai 2014, 20:05

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
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

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

Re: Tabelle: Datum automatisch setzen bei neuem Datensatz

Beitrag von Freischreiber » Sa 3. Mai 2014, 09:30

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
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

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

Re: Tabelle: Datum automatisch setzen bei neuem Datensatz

Beitrag von Freischreiber » Sa 3. Mai 2014, 09:37

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


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