Format Problem Datum im SQL Makro

Datenbanklösungen mit AOO/LO

Moderator: Moderatoren

tobiman26
***
Beiträge: 63
Registriert: Mi, 20.01.2016 15:17
Kontaktdaten:

Format Problem Datum im SQL Makro

Beitrag von tobiman26 »

Hallo Leute
Folgendes Problem ich arbeite gerade an einem Makro das einen Datensatz aus einer Tabelle in eine andere schiebt und dabei ergänzt
das Funktioniert mit Strings und Zahlen ganz gut aber mein Problem ist es ein Datum zu übertragen
ich hau mal eine DB in den Anhang mit 2 verschiedenen Makros eigentlich müssten beide funktionieren
tun sie teilweise auch wenn ich die Statements direkt ausführe und nicht im Makro
Test DB.odb
(14.29 KiB) 158-mal heruntergeladen
Mfg Tobias 8)

Windows 7 64bit + AOO 4.1.2 + LO 5.0.0.0
OpenSUSE 42.1 32 bit + LO 5.0.2.2
RobertG
********
Beiträge: 2033
Registriert: Fr, 13.04.2012 19:28
Kontaktdaten:

Re: Format Problem Datum im SQL Makro

Beitrag von RobertG »

Hallo Tobias,

da hast Du gleich mehrere Probleme. Das eine ist, dass Du mit AOO und LO arbeitest. Aus dem Handbuch:
Ab LO 4.1.2:
Der Zugriff auf Datumswerte mit Makros in Formularen wurde geändert. Der Datumswert wird jetzt im Datumsfeld als eine Kombination von Tag, Monat und Jahr wiedergegeben und nicht als ISO-Zahlenwert: oFeld.CurrentValue.Year ist so z.B. die Jahresangabe.
Für LO musst Du also das Datum als String so darstellen, damit es übernommen wird:

Code: Alles auswählen

stDate = oForm.getDate(dcolumn).Year&"-"&oForm.getDate(dcolumn).Month"-"&oForm.getDate(dcolumn).Day
Allerdings müsstest Du hier noch Monat und Datum in zweistellige Werte ändern.
Überprüfe bei so einem Makro immer, was denn in der SQL-Anweisung weiter gegeben wird:

Code: Alles auswählen

msgbox sSQL
Dann siehst Du auch schnell, wo der Fehler steckt. Mit einer Datumsvariablen, die in Base Verwendung findet, kannst Du keine Datenbank beschicken. Da hilft Dir nur eine Umwandlung in die für SQL übliche Schreibweise:

Code: Alles auswählen

YYYY-MM-DD
Für AOO musst Du selbst schauen, wie dort eine weitere Umwandlung nötig ist. Vermutlich erhältst Du dort über

Code: Alles auswählen

loDate = oForm.getDate(dcolumn)
eine Datumsvariable im Long-Format:

Code: Alles auswählen

YYYYMMDD
Dort fehlt dann also lediglich der Bindestrich zwischen Jahr und Monat sowie Monat und Tag, um daraus ein SQL-Format zu erstellen.

Gruß

Robert
Zuletzt geändert von RobertG am Di, 29.11.2016 20:13, insgesamt 1-mal geändert.
tobiman26
***
Beiträge: 63
Registriert: Mi, 20.01.2016 15:17
Kontaktdaten:

Re: Format Problem Datum im SQL Makro

Beitrag von tobiman26 »

Hallo Robert
danke für die schnelle Antwort.

Ich habe mal den Datumswert bei

Code: Alles auswählen

dDate = oForm.getdate(dcolumn)
in einer msgbox darstellen lassen (AOO)

Code: Alles auswählen

DD.MM.YY
und das leider obwohl in der Tabelle und im Formular das Format auf

Code: Alles auswählen

YYYY-MM-DD
gestellt ist.

Weiß irgendwie grad nicht weiter :?

Das ist mir noch eingefallen

Code: Alles auswählen

dDate = cdate(oForm.getstring(dcolumn))
Mfg Tobias 8)

Windows 7 64bit + AOO 4.1.2 + LO 5.0.0.0
OpenSUSE 42.1 32 bit + LO 5.0.2.2
tobiman26
***
Beiträge: 63
Registriert: Mi, 20.01.2016 15:17
Kontaktdaten:

Re: Format Problem Datum im SQL Makro

Beitrag von tobiman26 »

hab noch was interessantes gefunden

https://forum.openoffice.org/en/forum/v ... 74&t=82181
Mfg Tobias 8)

Windows 7 64bit + AOO 4.1.2 + LO 5.0.0.0
OpenSUSE 42.1 32 bit + LO 5.0.2.2
RobertG
********
Beiträge: 2033
Registriert: Fr, 13.04.2012 19:28
Kontaktdaten:

Re: Format Problem Datum im SQL Makro

Beitrag von RobertG »

Hallo Tobias,

hast Du einmal

Code: Alles auswählen

stDate = oForm.getString(dcolumn)
versucht? Da kommt ganz normal die Formatierung bei raus, die Du brauchst - wenn ich das mit LO versuche.

Die Zugriffe, die ich im vorherigen Post beschrieben habe, sind gar nicht nötig, leider auch teilweise fehlerhaft - korrigiere ich noch kurz.

Gruß

Robert
tobiman26
***
Beiträge: 63
Registriert: Mi, 20.01.2016 15:17
Kontaktdaten:

Re: Format Problem Datum im SQL Makro

Beitrag von tobiman26 »

Ich habe es mit der Lösung probiert die ich im letzten Link geposted habe und es funktioniert
Mfg Tobias 8)

Windows 7 64bit + AOO 4.1.2 + LO 5.0.0.0
OpenSUSE 42.1 32 bit + LO 5.0.2.2
Antworten