Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Firebird Problem mit Datum (https://www.delphipraxis.net/178275-firebird-problem-mit-datum.html)

Hansa 29. Dez 2013 16:20

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 ?

Bernhard Geyer 29. Dez 2013 16:44

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.

Hansa 29. Dez 2013 17:25

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:
SchreibeSP.ParamByName('TAGNR').AsDate := t;
...
SchreibeSP.ExecProc;
// wobei : t : TDateTime;
In der DB sieht es dann ungefähr so aus :

Code:
/* 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 ...
...
Incompatible column/host variable data type.
Dynamic SQL Error.
SQL error code = -303.
Conversion error from string "29/12/2013".

Fehlertyp : EFIBInterBaseError
Sender : TInplaceEdit

DeddyH 29. Dez 2013 17:32

AW: Firebird Problem mit Datum
 
Ist t eine Stringvariable mit dem Inhalt "29/12/2013"?

vagtler 29. Dez 2013 17:51

AW: Firebird Problem mit Datum
 
Dann dürfte
Delphi-Quellcode:
.AsDate
fehlschlagen.

Hansa 29. Dez 2013 18:32

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:
DS.ParamByName('TAGNR').AsString := TagNr;
So, da steht dann eben '28.12.2013' drin und das würde den Effekt erklären. Nur der string koMMt so zustande :

Delphi-Quellcode:
DatumVar : TDate;
...
DateToStr (DatumVar)
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.

Sir Rufo 29. Dez 2013 18:35

AW: Firebird Problem mit Datum
 
Nein, muß es nicht, denn das hängt von der Einstellung der Session ab (Regionseinstellungen)

p80286 30. Dez 2013 12:55

AW: Firebird Problem mit Datum
 
Zitat:

Zitat von Bernhard Geyer (Beitrag 1241379)
Und das Datumfeld ist das erst wobei man auf die Sch*** fällt (Ist bei MS Access ein sehr beliebtes Problem).

Das hast Du aber sehr vornehm formuliert.
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 15:59 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz