Hallo,
wahrscheinlich ein Problem für die Programmierspezialisten.
Ich benutze eine selbstgeschriebene Anwendung, die jetzt zwei Jahre gut funktioniert hat. Sie beinhaltet Makros und greift von *ods auf eine HDSQL DB im Base zu.
Seit kurzer Zeit (vermutlich seitdem ich das JAVA Update 1.6.0_19 eingespielt habe) bekomme ich beim Benutzen der Anwendung immer wieder Fehler, sobald ich an einer Stelle mit Datum bin.
Erste Untersuchungen brachten folgende Schlussfolgerung:
"UPDATE ""Daten"" SET ""Geburtstag"" = '"&Year(Date)&"-" &month(Date)& "-"& day(Date) " etc.
erzeugt den Fehler "Wrong Data Type" (Auch an Stellen mit "Insert", es tritt also an mehreren Stellen auf).
Übergebe ich das Datum im Format "2010-04-04" (bzw. JJJJ-MM-TT) klappt es.
Die Funktion month(date) und Day(Date) führen dazu, dass das Ergebnis des Datums als "2010-4-4" übergeben wird, was vermutlich den Fehler auslöst.
Bisher klappte es immer, also muss sich irgendwo etwas verändert haben, was den Fehler auslöst. Ich habe bis auf das JAVA Runtime Update nichts (wissentlich) geändert.
Ich glaube, dass sich Month(Date) etc. nicht verändert haben und somit auch das SQL Statement nicht...
Meine Fragen:
Wie bekomme ich es hin, dass die Anwendung wieder funktioniert ohne an allen Stellen nachzubessern?
Kann jemand dieses Verhalten bestätigen/ oder ist es ein individueller Fehler, an einer noch nicht bedachten Stelle.
Kann so ein Verhalten (überhaupt) durch Änderungen an der JAVA Runtime ausgelöst werden.
Ist das ein "normales Update" oder ein BUG? (Ein schnelles Querry brachte mir keinen entsprechenden Eintrag).
Über Hinweise oder Bestätigungen wäre ich dankbar.
Genießt die Sonne!
Stefan
SQL Inserts oder Month(Date) Funktion macht Probleme
Moderator: Moderatoren
Re: SQL Inserts oder Month(Date) Funktion macht Probleme
Hallo Stefan,
Aus meiner Sicht schwer einzuschätzen, ob und inwiefern es am Java Update liegen kann.
---
Ich nehme an, dass die zu befüllende Spalte "Geburtstag" vom Typ "Datum" ist. Somit ist das erwartete Format 'YYYY-MM-DD'. Deine Versuche bestätigen, dass es so funktioniert. Du solltest hierzu vielleicht einmal mit TO_CHAR probieren um sicherzustellen, dass zweistellig gearbeitet wird
Vielleicht ja ein Ansatz zur Lösungsfindung.
Gruß Barlee
Die Vermutung teile ich. Gab es in Vergangenheit vielleicht diesen Fall noch nicht, dass Du einstellige Tage- oder Monatszahlen verarbeitet hast? Wohl eher unwahrscheinlich wenn's zwei Jahre problemlos funktionierte, oder?dass das Ergebnis des Datums als "2010-4-4" übergeben wird, was vermutlich den Fehler auslöst.
Aus meiner Sicht schwer einzuschätzen, ob und inwiefern es am Java Update liegen kann.
---
Ich nehme an, dass die zu befüllende Spalte "Geburtstag" vom Typ "Datum" ist. Somit ist das erwartete Format 'YYYY-MM-DD'. Deine Versuche bestätigen, dass es so funktioniert. Du solltest hierzu vielleicht einmal mit TO_CHAR probieren um sicherzustellen, dass zweistellig gearbeitet wird
Code: Alles auswählen
... TO_CHAR("Datum",'YYYY-MM-DD')
Gruß Barlee
Re: SQL Inserts oder Month(Date) Funktion macht Probleme
Hallo Barlee,
leider gibt es die Funktion TO_Char so leider nicht.
An anderer Stelle im Programm hatte ich die Funktion CDateToIso verwendet. (Leider nicht durchgängig, weil ich mir die Logik damals erst selber beibrachte...)
Eine interessante Routine hierzu habe ich im Forum gefunden: viewtopic.php?f=18&t=10091
Ich werde an den noch nicht umgestellten Stellen die Logik entsprechend anpassen, damit sollte das Programm dann wasserfest(er) sein.
Gruß Stefan
leider gibt es die Funktion TO_Char so leider nicht.
An anderer Stelle im Programm hatte ich die Funktion CDateToIso verwendet. (Leider nicht durchgängig, weil ich mir die Logik damals erst selber beibrachte...)
Eine interessante Routine hierzu habe ich im Forum gefunden: viewtopic.php?f=18&t=10091
Ich werde an den noch nicht umgestellten Stellen die Logik entsprechend anpassen, damit sollte das Programm dann wasserfest(er) sein.
Gruß Stefan