![]() |
Datenbank: MSSQL Express Edition • Version: 2005 • Zugriff über: ADO
Datum wird falsch in der Tabelle gespeichert
Hi,
Ich habe folgende Szenario: MSSQL 2005 Express Edition, XE2 und Datenzugriff über dbGo-ADOConnection. Eine Tabelle namens "Rechnung" und darin mehrere Fehlder, unter anderem das Feld "Rechnungsdatum" vom Typ datetime. Ich speichere die Daten über ein ADOQuery.
Delphi-Quellcode:
Funktioniert soweit, bis auf das Datum.
ADOQuery.SQL.Text='Update Rechnung SET rechnungsdatum=:datum where Rechnungsnummer=:renr';
ADOQuery.Parameter.ParseSQL(ADOQuery.SQL.Text, True); ADOQuery.Parameter.ParamValue['datum']:=now; ADOQuery.Parameter.ParamValue['renr']:='RE12345678'; ADOQuery.ExecSQL; Wenn ich jetzt das ganze ausführe, also mit dem Datum 24.10.2012, dann steht hinterher in der DB 26.10.2012. Die Uhrzeit stimmt erstaunlicherweise. Woran könnte das liegen? |
AW: Datum wird falsch in der Tabelle gespeichert
Hallo,
warum nimmst Du zum Speichern/Updaten der Daten kein ADOCommand. Dieses ist eigentlich dafür gedacht. Ich mache es eigentlich immer so und hatte bis dato keine Probleme.
Delphi-Quellcode:
ADOCommand.CommandText:='Update Rechnung SET rechnungsdatum=:datum where Rechnungsnummer=:renr';
ADOCommand.Parameters.ParamByName('datum').Value:=Date(); ADOCommand.Parameters.ParamByName('renr').Value:='RE12345678'; ADOCommand.Execute(); |
AW: Datum wird falsch in der Tabelle gespeichert
Stimmt das Datum am Server?
|
AW: Datum wird falsch in der Tabelle gespeichert
@Captnemo
Das mit Datum und Now ist so eine Sache. Man weiß nie ob der Server mit den Datumsformat des Clients etwas anfangen kann. Erfahrungsgemäß funktioniert es sogar sehr oft, aber eher nur zufällig. |
AW: Datum wird falsch in der Tabelle gespeichert
Das Datum in basiert auf 0=30.12.1899, beim SQLServer 0=1900-01-01 00:00:00.000
Caption := DateTimeToStr(0); Select Cast(0 as dateTime) Scheinbar wird Dein Parametertyp interpretiert als ADOQuery1.Parameters.ParamByName('datum').DataType := ftFloat; versuch mal was passiert wenn Du ihn setzt: ADOQuery1.Parameters.ParamByName('datum').DataType := ftDateTime;
Delphi-Quellcode:
ADOQuery1.SQL.Text:='Update Adressen SET geboren=:datum where ID=:ID'; ADOQuery1.Parameters.ParseSQL(ADOQuery1.SQL.Text, True); ADOQuery1.Parameters.ParamByName('datum').DataType := ftFloat; // 2 Tage Fehler ADOQuery1.Parameters.ParamByName('datum').DataType := ftdateTime; // kein Fehler ADOQuery1.Parameters.ParamByName('datum').Value:=now; ADOQuery1.Parameters.ParamByName('ID').Value:=2876; ADOQuery1.ExecSQL; |
AW: Datum wird falsch in der Tabelle gespeichert
Bummi hat's gelöst ;-)
Zumindest hat mein erster Test erfolgreich funktioniert. Danke an alle. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:16 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz