🙏 Helfen Sie 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. 🤗
gelöst: Datumsfeld per Macro auslesen und in DB schreiben.
gelöst: Datumsfeld per Macro auslesen und in DB schreiben.
Hiho,
Ich möchte mit einem Makro das DAtum eines Datumfeldes in einem Formular auslesen und in die Datenbank (MySQL) schreiben.
Mit normalen Textfeldern klappt das z.b. ganz gut.
ausschnitt aus dem Code:
DIM dDate AS Date
.
.
.
oFeld = oForm.getByName("Datum")
dDate = oFeld.GetCurrentValue()
.GetCurrentValue() ist wohl falsch --> "Falscher Wert für Eigenschaft."
.Value() geht auch nicht. --> "Eigenschaft oder Methode nicht gefunden: Value."
Wie könnte das denn gehen und wo finde ich überhaupt informationen über die Eigenschaften eines Objects?
Grüße,
MArtinS
Ich möchte mit einem Makro das DAtum eines Datumfeldes in einem Formular auslesen und in die Datenbank (MySQL) schreiben.
Mit normalen Textfeldern klappt das z.b. ganz gut.
ausschnitt aus dem Code:
DIM dDate AS Date
.
.
.
oFeld = oForm.getByName("Datum")
dDate = oFeld.GetCurrentValue()
.GetCurrentValue() ist wohl falsch --> "Falscher Wert für Eigenschaft."
.Value() geht auch nicht. --> "Eigenschaft oder Methode nicht gefunden: Value."
Wie könnte das denn gehen und wo finde ich überhaupt informationen über die Eigenschaften eines Objects?
Grüße,
MArtinS
Zuletzt geändert von MartinS am Sa 23. Dez 2023, 18:16, insgesamt 1-mal geändert.
Re: Datumsfeld per Macro auslesen und in DB schreiben.
Moin,
Aber du kannst dich auch hier durchwühlen: https://api.libreoffice.org/docs/idl/re ... Field.html
Für dich interessant: getDate()
Wobei du darauf achten musst, dass es sich hier um ein com.sun.star.util.Date, also ein Struct mit drei Werten, TAG, MONAT und JAHR handelt.
Also angenommen du schreibst:
Dann bekommst du die einelnen Komponenten mit
die du dann wieder zum entsprechenden Datum für deine MYSQL DB zusammenbauen musst.
Oder du nutzt die interne Function
um das Struct in einen Wert umzuwandeln.
Gruß R
Ich mache das immer mit MRI oder XRAY.... wo finde ich überhaupt informationen über die Eigenschaften eines Objects?
Aber du kannst dich auch hier durchwühlen: https://api.libreoffice.org/docs/idl/re ... Field.html
Für dich interessant: getDate()
Wobei du darauf achten musst, dass es sich hier um ein com.sun.star.util.Date, also ein Struct mit drei Werten, TAG, MONAT und JAHR handelt.
Also angenommen du schreibst:
Code: Alles auswählen
oFeld = oForm.getByName("Datum")
dDate = oFeld.GetDate()
Code: Alles auswählen
nDay = dDate.Day
nMonth = dDate.Month
nYear = dDate.Year
Oder du nutzt die interne Function
Code: Alles auswählen
cDateFromUNODate(dDate)
Gruß R
Windows 11: AOO, LO Linux Mint: AOO, LO
Re: Datumsfeld per Macro auslesen und in DB schreiben.
Danke,
aber das funktioniert leider nicht:
ergibt
Libreoffice ist hier 7.3 auf ner OpenSuse-Kiste
MartinS
aber das funktioniert leider nicht:
Code: Alles auswählen
DIM oFeld_2 AS OBJECT
DIM dDate AS DATE
oFeld_2 = oForm.getByName("Inv_Datum")
dDate = oFeld_2.GetDate()
Code: Alles auswählen
BASIC-Laufzeitfehler.
Eigenschaft oder Methode nicht gefunden: GetDate.
Libreoffice ist hier 7.3 auf ner OpenSuse-Kiste
MartinS
Re: Datumsfeld per Macro auslesen und in DB schreiben.
Tja,
könnte drei Gründe haben:
könnte drei Gründe haben:
- ist falsch, wenn, dann müsste es
Code: Alles auswählen
DIM dDate AS DATE
heißen.Code: Alles auswählen
dim dDate as new com.sun.star.util.Date
- du hast kein Datumsfeld benutzt
- deine LibreOffice Version ist uralt
Windows 11: AOO, LO Linux Mint: AOO, LO
Re: Datumsfeld per Macro auslesen und in DB schreiben.
geht natürlich auch über
usw.
Das sind aber Zahlenwerte. Wenn daraus ein SQL-Datum werden soll müssten die Tages und Monatsangaben zweistellig gemacht werden.
Code: Alles auswählen
oFeld_2.CurrentValue.Day
Das sind aber Zahlenwerte. Wenn daraus ein SQL-Datum werden soll müssten die Tages und Monatsangaben zweistellig gemacht werden.
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
Re: Datumsfeld per Macro auslesen und in DB schreiben.
also:
funktioniert (unabhängig davon, wie dDate definiert ist) nicht. --> "Eigenschaft oder Methode nicht gefunden: GetDate."
(Und ja, es ist ein Datumsfeld)
liefert etwas, muss ich noch schauen, wie ich das zusammenbastel.
Grüße,
MartinS
Code: Alles auswählen
oFeld2 = oForm.getByName("Inv_Datum")
dDate = oFeld2.getDate()
(Und ja, es ist ein Datumsfeld)
Code: Alles auswählen
oFeld2 = oForm.getByName("Inv_Datum")
dDate = oFeld2.CurrentValue.Day
Grüße,
MartinS
Re: Datumsfeld per Macro auslesen und in DB schreiben.
Ok, wie im tollen Handbuch beschrieben, funzt es ein bisserl besser:
CDateFromISO macht so aber aus dem 27.12.2022 in der Datenbank den 20.12.2027 (aus dem 31.12.2023 entsprechend den 20.12.2031
naja, ein stückchen weiter.
Code: Alles auswählen
DIM dTag AS STRING
DIM dMonat AS STRING
DIM dJahr AS STRING
DIM dDatum AS DATE
oFeld2 = oForm.getByName("Inv_Datum")
dTag = Right (Str(0) & Str(oFeld2.CurrentValue.day),2 )
dMonat = Right (Str(0) & Str(oFeld2.CurrentValue.month),2 )
dJahr = Right (Str(0) & Str(oFeld2.CurrentValue.year),4 )
dDatum = CDateFromIso ( dJahr & dMonat & dTag)
naja, ein stückchen weiter.
Re: Datumsfeld per Macro auslesen und in DB schreiben.
Oje,
habe gerade gemerkt, dass tatsächlich auch bei mir nicht funzt.
Nimm stattdessen:
Gruß R
habe gerade gemerkt, dass
Code: Alles auswählen
.getDate()
Nimm stattdessen:
Code: Alles auswählen
oFeld2 = oForm.getByName("Inv_Datum")
dDate = oFeld2.Date
Windows 11: AOO, LO Linux Mint: AOO, LO
Re: Datumsfeld per Macro auslesen und in DB schreiben.
HRHRHRHRHRHRHRHRHR...
Vor einigen Jahren hatte ich schon mal das Problem:
viewtopic.php?f=10&t=16046&p=41137#p41134
So funzt es!
Aber da sieht man mal wie lange der Mist schon im Produktiven Einsatz (größtenteils läuft
)
Grüße,
MartinS
Vor einigen Jahren hatte ich schon mal das Problem:
viewtopic.php?f=10&t=16046&p=41137#p41134
Code: Alles auswählen
DIM dDatum AS STRING
oFeld2 = oForm.getByName("Inv_Datum")
dTag = Right (Str(0) & Str(oFeld2.CurrentValue.day),2 )
dMonat = Right (Str(0) & Str(oFeld2.CurrentValue.month),2 )
dJahr = Right (Str(0) & Str(oFeld2.CurrentValue.year),2 )
dDatum = dJahr & "-" & dMonat & "-" & dTag
Aber da sieht man mal wie lange der Mist schon im Produktiven Einsatz (größtenteils läuft

Grüße,
MartinS
Re: Datumsfeld per Macro auslesen und in DB schreiben.
Moin,
geht auch kürzer:
oder vielleicht besser:
Gruß R
geht auch kürzer:
Code: Alles auswählen
DIM dDatum AS STRING
oFeld2 = oForm.getByName("Inv_Datum")
dDatum = Format(cDatefromUnoDate(oFeld2.date),"YY-MM-DD")
Code: Alles auswählen
DIM dDatum AS STRING
oFeld2 = oForm.getByName("Inv_Datum")
dDatum = Format(cDatefromUnoDate(oFeld2.date),"YYYY-MM-DD")
Windows 11: AOO, LO Linux Mint: AOO, LO
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.