Seite 1 von 1
Datumsfeld mit anderem relativen Startdatum aufrufen?
Verfasst: Sa, 11.10.2014 19:16
von Yaddayadda
Hallo,
ist es möglich, in einem Formular das aufklappbare Datumsfeld mit einem relativen Startdatum aufzurufen? Also z.B. immer mit dem jeweiligen Vormonat? Ich habe nur die Möglichkeit gefunden, entweder ein fest eingestelltes Datum oder das aktuelle Datum zu wählen. Da ich sehr viele Daten immer aus dem Vormonat eingeben muss, ist es mühsam, immer erst einen Monat zurück zu klicken.
Danke und Gruß,
yaddayadda
Re: Datumsfeld mit anderem relativen Startdatum aufrufen?
Verfasst: So, 12.10.2014 11:54
von RobertG
Hallo yaddayadda,
ich habe das folgende Makro damit erfolgreich getestet:
Code: Alles auswählen
SUB Standarddatum
DIM oDoc AS OBJECT
DIM oDrawpage AS OBJECT
DIM oForm AS OBJECT
DIM oFeld AS OBJECT
DIM unoDate
oDoc = thisComponent
oDrawpage = oDoc.drawpage
oForm = oDrawpage.forms.getByName("Formular")
oFeld=oForm.getByName("Datum")
unoDate = createUnoStruct("com.sun.star.util.Date")
IF Month(Date) = 1 THEN
unoDate.Year = Year(Date)-1
unoDate.Month = 12
ELSE
unoDate.Year = Year(Date)
unoDate.Month = Month(Date)-1
END IF
unoDate.Day = Day(Date)
oFeld.setPropertyValue("DefaultDate", unoDate)
END SUB
Das Formular heißt "Formular", das Feld in diesem Formular heißt "Datum".
Das Makro habe ich beim Start des Formulars untergebracht: Formular zum bearbeiten öffnen, im Formular dann Extras → Anpassen → Ereignisse → Ansicht wurde erzeugt.
Gruß
Robert
Re: Datumsfeld mit anderem relativen Startdatum aufrufen?
Verfasst: So, 12.10.2014 17:43
von Yaddayadda
Hallo RobertG,
habe dein Makro getestet. Es geht auch soweit. Allerdings kann ich nicht das per Makro definierte Default-Datum eingeben. Jeder andere Tag des Vormonats geht, nur nicht z.B. der 12.09., wenn heute der 12.10. ist. Dann bleibt das Datensatz-speichern-Feld grau.
Gruß,
yaddayadda
Re: Datumsfeld mit anderem relativen Startdatum aufrufen?
Verfasst: So, 12.10.2014 19:08
von RobertG
Hallo yaddayadda,
das Datum ist ja nur der Default-Wert. Das passiert Dir bei allen Default-Werten. Wenn Du irgendwo anders in den Datensätzen etwas änderst müsste aber die Abspeicherung erfolgreich sein.
Du kannst auch das Datum direkt eintragen lassen mit
Code: Alles auswählen
IF isEmpty(oFeld.Date) THEN
oFeld.BoundField.updateDate(unoDate)
END IF
Dann erreichst Du aber, dass eben direkt bei der Navigation durch die Datensätze jedes Datumsfeld ohne Wert mit dem Datum versehen und abgespeichert wird.
Die Zeile
entfällt dann natürlich.
Gruß
Robert
Re: Datumsfeld mit anderem relativen Startdatum aufrufen?
Verfasst: Mo, 13.10.2014 09:31
von Yaddayadda
Hallo RobertG,
habe deinen zweiten Vorschlag ausprobiert. Erhalte aber einen Fehler (Objektvariable nicht belegt) bezogen auf die Zeile
. Ich schätze, ich muss das Makro nun an eine andere Aktion binden. Habe auch schon einiges durchprobiert, aber noch nicht das richtige gefunden. Entweder es gibt den genannten Fehler oder das Datumsfeld bleibt bei Erstellung eines neues Datensatzes leer und startet beim Aufklappen beim aktuellen Datum statt dem Vormonat.
Gruß,
yaddayadda
Re: Datumsfeld mit anderem relativen Startdatum aufrufen?
Verfasst: Mo, 13.10.2014 10:51
von RobertG
Hallo yaddayadda,
das vorherige Makro setzte den Standardwert. Wenn Du direkt den Wert schreiben willst (in ein Feld mit BoundField), dann muss das Makro nicht beim Erzeugen der Ansicht laufen, sondern z.B. bei der Aktion "Nach dem Datensatzwechsel" des jeweiligen Formulars, in der das Feld liegt.
Gruß
Robert
Re: Datumsfeld mit anderem relativen Startdatum aufrufen?
Verfasst: Mo, 13.10.2014 11:21
von Yaddayadda
"Nach dem Datensatzwechsel" war das Zauberwort.

Und ich hatte so viele Ereignisse schon für das Makro durchprobiert, aber das natürlich nicht. Nun funktioniert es wie gewünscht, tausend Dank!
Gruß,
yaddayadda