arbeitet man mit makros, stellt sich bald die Frage, wie konvertiere ich Datumsfelder aus den Formulaten möglichst effizient für Eingabeprüfungen, Vergleiche etc.
Da ich keine Standardfunktion (oO 4.2, Win 7) dafür finden konnte, habe ich mir Folgendes gebastelt:
a) exemplarischer Aufruf der Konvertierungsroutine:
Code: Alles auswählen
SUB FormLesen
DIM oDoc AS OBJECT
DIM oDrawpage AS OBJECT
DIM oForm AS OBJECT
DIM oFeld AS OBJECT
DIM dDate AS NEW com.sun.star.util.DATE
DIM stdDate AS STRING
oDoc=thisComponent
oDrawpage=oDoc.Drawpage
oForm=oDrawpage.Forms.getByName("Formular1")
oFeld = oForm.getByName("Datum")
dDate = oFeld.getCurrentValue
stdDate= FormDate_2_yyyymmmtt(dDate)
END SUB
Code: Alles auswählen
FUNCTION FormDate_2_yyyymmmtt (d AS NEW com.sun.star.util.DATE)
REM Konvertiert ein Datumsfeld im Formular in ein STRING YYYYMMTT
DIM stNull AS STRING
stNull = "00000000"
IF NOT IsEmpty(d) THEN
itt = d.day
imm = d.month
iyyyy =d.year
IF itt < 10 THEN
stt = "0" + itt
else
stt = itt
END IF
IF imm < 10 THEN
smm = "0" + imm
else
smm = imm
END IF
syyyy = iyyyy
FormDate_2_yyyymmmtt = syyyy + smm + stt
ELSE
FormDate_2_yyyymmmtt = stNull
END IF
END FUNCTION
Gibt es elegantere Möglichkeiten?
Guss,
WSO