Libreoffice Base: Benötigen Sie das heutige Datum als Standardwert in einem Formularfeld

2368
bob.sacamento

Neu bei libreoffice Base. Ich habe gefunden, wie man den Standardwert in einer Tabelle auf das aktuelle Datum setzt. Jetzt muss das aktuelle Datum im entsprechenden Feld eines Formulars angezeigt werden. Ich habe versucht, in "Standardwert" TODAY()und einzufügen CURRENT_DATE. Beide geben mir aus irgendeinem Grund den 18. November 1899. Und Ideen, wie das geht?

1

2 Antworten auf die Frage

1
Jim K

Verwenden Sie den folgenden Makrocode. Hier wird die Tabellenspalte (nicht der Steuerelementname) als "MyDate" bezeichnet.

Sub DefaultDateInForm (oEvent As Object) oForm = oEvent.Source lDateCol = oForm.findColumn("MyDate") If oForm.getString(lDateCol) = "" Then dateStamp = Format(Now, "YYYY-MM-DD") oForm.updateString(lDateCol, dateStamp) End If End Sub 

Bearbeiten Sie das Formular, und weisen Sie in den Formulareigenschaften das Makro dem Ereignis "after record change" zu.

Formulareigenschaften

Immer wenn das Datum eines Datensatzes leer ist, z. B. wenn ein neuer Datensatz gestartet wird, sollte das Datumsfeld standardmäßig auf das aktuelle Datum gesetzt werden.

Es gibt mehrere Diskussionen zu diesem Thema im openoffice-Forum:

Danke, aber nicht viel Fortschritt. Jetzt bekomme ich den 25. Dezember 1899. Hey, zumindest ist Weihnachten! Überprüfe deine Links. bob.sacamento vor 7 Jahren 0
Vielleicht haben die Datumseinstellungen Ihres Systems oder die Steuerung etwas anderes? Es hat auf meiner Maschine funktioniert. Versuchen Sie, "JJJJ-MM-TT" in ein anderes Format zu ändern. Sagt es in der Datumssteuerung wörtlich "25. Dezember 1899"? Meines zeigt das Format "02/01/17". Um das Problem zu finden, kann es hilfreich sein, `MsgBox (dateStamp)` und `MsgBox (oForm.getString (lDateCol))`. Jim K vor 7 Jahren 0
Nun, egal wie ich es formatiere, es ist dieses Datum. Nun, da ich ein paar verschiedene Dinge probiere, ändert sich das. Habe eigentlich 1 Jan 0002 einmal bekommen und ein paar andere seltsame. Ich bin neu bei diesem Thema. Ich weiß nicht, was Sie mit MsgBox () meinen. Aber danke! bob.sacamento vor 7 Jahren 0
äh-oh Jetzt erhalte ich ein Fehlerfeld "Fehler beim Einfügen des neuen Datensatzes / java.lang.IllegalArgumentException" bob.sacamento vor 7 Jahren 0
Fügen Sie beispielsweise "MsgBox (dateStamp)" in der nächsten Zeile nach "dateStamp = Format" hinzu (Jetzt "JJJJ-MM-TT") `. Der Fehler zeigt möglicherweise an, dass das Format noch nicht richtig ist. Jim K vor 7 Jahren 0
Treten Sie diesem Chat-Raum bei und hoffentlich können wir das Problem herausfinden: http://chat.stackexchange.com/rooms/52946/superuser-question-1174199 Jim K vor 7 Jahren 0
1
Salvador

Dieses Makro schreibt das heutige Datum in das Datumsfeld myDateField:

Sub writeDate Dim today As New com.sun.star.util.Date today.Month = Month( Now ) today.Day = Day( Now ) today.Year = Year( Now ) form = ThisComponent.DrawPage.Forms(0) ' first form form.myDateField.BoundField.UpdateDate( today ) End Sub 

So weisen Sie die Aktion zu: Formularnavigator> MeineForm> Formulareigenschaften> Ereignisse> zB Beim Laden