StrToDate, falsches Format
-
hi!
ich kämpfe jetzt schon seit 2 stunden (bin verzweifelt).
ich lese aus einer sqlite db ein datum aus (argv[17]).
im "sqlite administrator" steht das datum im folgendem format: "14.10.2008".TDateTime Dbis = StrToDate(argv[17]);
und wenn ich das programm starte, bekomme ich die meldung:
"2008-10-14" ist kein gültiges datums format.
mit StrToTime funktioniert alles super, aber jetzt brauch ich das datum.
meine versuche das datum umzuwandeln sind auch gescheitert.
s=FormatDateTime("d.m.YYYY",String(argv[16]));
vielen dank.
-
Schau dir mal die FormatSettings an( ShortDateFormat, ... ). Vllt liegts ja daran.
Oder zeig mal was genau in dem String aus deiner DB steht.grüssle
-
Das Problem sieht so aus.
TDateTime Dbis = StrToDate(argv[17]);
Du versuchst hier ein Datum in eine "DatumZeit" Objekt zu schreiben.
Versuche es mal so:
TDate Dbis = StrToDate(argv[17]);
Es sollte jedoch auch so funktioneren (hab grad kein Builder zur Hand.
TDateTime Dbis; Dbis->Date = StrToDate(argv[17]);
Ich hoffe, was ich geschrieben habe, stimmt soweit.
Zumindes benutze ich selber auch immer TDate;
-
@Kreilon
Es ist völlig egal ob man das in TDate oder TDateTime speichert, da das Datum der ganzahlige Anteil von TDateTime ist. Dbis->Date geht schon garnicht.@alex.666
ist die Spalte mit dem dateum vom Typ her Datum oder String(char)? was ist denn argv für ein Variablentyp? und wie füllst du das Datum in argv?wenn das eine richtige Dateumsspalte ist kannst du den Wert auch direkt an ein TDateTime übergeben. Ansonsten mußt du wie auch Smitty schon sagte das ShortDateFormat anpassen
-
der datentyp ist date, damit ich sql abfragen machen kann.
eben zb.: von, bis...
-
int LoadBon() { sql = "SELECT ID, Time, Date FROM Table"; if(SQLITE_OK != sqlite3_exec(db, sql, Callback, NULL, &dberr)) { free(dberr); } return 0; } int Callback( void *Pointer, int argc, char **argv, char **columnNames) { TDateTime RefTime = StrToTime("18:00:00"); TDateTime RefDate = StrToDate("15.10.2008"); if (argv[15]) { TDateTime Tbis = StrToTime(argv[1]); if Tbis == RefTime) { anweisung(); } } if (argv[17]) { TDateTime Dbis = StrToDate(argv[2]); if Dbis == RefDate) { anweisung(); } } return 0; }
eben, das komische ist, dass es mit time (sqlite typ time) funktioniert, aber mit date nicht.
-
mit ShortDateFormat habs ich jetzt hin bekommen danke...
DateSeparator = '-'; ShortDateFormat = "yyyy/m/dd"; TDateTime Dbis = StrToDate(argv[2]);