![]() |
Datenbank: FB • Version: 2.5 • Zugriff über: FibPlus
Firebird Problem mit Datum
Moin,
ich sitze hier in Frankreich an einem Rechner, um ein Programm zu testen. Das geht auch so weit (Umlaute sind richtig, wenn ich auch nicht weiss, wie man sie richtig eingibt :shock:), allerdings gibt es beim Speichern Aerger bei einem Datum. Das wird in Windows im Format dd/mm/yyyy angezeigt und soll wohl auch so abgespeichert werden. Bei mir im Programm konmmt dann Fehlermeldung, irgendwas mit Data Conversion Error. Habe mir das auch in IBExpert mal angesehen: da sieht es so aus, dass das Datum im Format dd.mm.yyyy angezeigt wird. Der Hint bei den Datumsfeldern wird allerdings auch mit dd/mm/yyyy angezeigt und die Eingabe wird so erwartet. Die Frage ist jetzt : wie wird das Ganze woanders gehandhabt ? Sollte man da besser Maskedit etc. verwenden oder anderen Zeichensatz (momentan ISO8859_1) oder wie oder was ? |
AW: Firebird Problem mit Datum
Arbeitest du nicht mit parametrisierten Abfragen/Inserts? Hört sich fast so an als bastelst du deine Insert so zusammen. Und das Datumfeld ist das erst wobei man auf die Sch*** fällt (Ist bei MS Access ein sehr beliebtes Problem).
Also poste doch mal den Code den du verwendest. Den jedes DBMS wird nicht in einem speziellen Format das Datum speichern sondern sein internes (meistens Binäres) Format dafür verwenden. Die Angaben dd.mm.yyyy bzw. dd/mm/yyyy sind reine Visualisierungsformate. |
AW: Firebird Problem mit Datum
Ich bastele gewiss noch ein Datum zusammen :shock:
Nene, das ist schon parametrisiert und läuft in SP.
Delphi-Quellcode:
In der DB sieht es dann ungefähr so aus :
SchreibeSP.ParamByName('TAGNR').AsDate := t;
... SchreibeSP.ExecProc; // wobei : t : TDateTime;
Code:
Incompatible column/host variable data type.
/* Tabellenfeld /*/
CREATE TABLE TABELLE ( ... TAGNR DATE, ... /* in SP /*/ SELECT ID FROM TABELLE WHERE ... AND (TAGNR= :TAGNR) AND ... INTO :AENDERN; IF (AENDERN < 0) THEN BEGIN UPDATE TABELLE SET ... WHERE ... AND (TAGNR= :TAGNR) AND ... ... Dynamic SQL Error. SQL error code = -303. Conversion error from string "29/12/2013". Fehlertyp : EFIBInterBaseError Sender : TInplaceEdit |
AW: Firebird Problem mit Datum
Ist t eine Stringvariable mit dem Inhalt "29/12/2013"?
|
AW: Firebird Problem mit Datum
Dann dürfte
Delphi-Quellcode:
fehlschlagen.
.AsDate
|
AW: Firebird Problem mit Datum
Deddy war nah dran. Vagtler auch (gepostete Stelle war auch die falsche). Weiss der Kuckuck, aber an einer Stelle kam tatsächlich ein String ins Spiel.
Delphi-Quellcode:
So, da steht dann eben '28.12.2013' drin und das würde den Effekt erklären. Nur der string koMMt so zustande :
DS.ParamByName('TAGNR').AsString := TagNr;
Delphi-Quellcode:
Das DateToStr müsste aber doch dann einen string '28/12/2013' liefern. Selbst wenn der als AsString von der SP verarbeitet werden soll, dann müsste doch alles richtig laufen ? Tut es aber nicht. Ein Datum als string ab die DB zu übergeben, das ist sowieso Quatsch und wird geändert. Trotzdem dürfte der Fehler imho nicht auftauchen.
DatumVar : TDate;
... DateToStr (DatumVar) |
AW: Firebird Problem mit Datum
Nein, muß es nicht, denn das hängt von der Einstellung der Session ab (Regionseinstellungen)
|
AW: Firebird Problem mit Datum
Zitat:
Nach meiner Erfahrung ist es am besten, wenn es sich nicht vermeiden läßt, das ISO-Format ohne Trennzeichen zu verwenden also YYYYMMDD. Auch die üblichen Verdächtigen wie Access und Excel haben im allgemeinen wenig Probleme damit (ich hab nicht keine geschrieben) Gruß K-H |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:26 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