AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Firebird Problem mit Datum

Ein Thema von Hansa · begonnen am 29. Dez 2013 · letzter Beitrag vom 30. Dez 2013
Antwort Antwort
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#1

Firebird Problem mit Datum

  Alt 29. Dez 2013, 17:20
Datenbank: FB • Version: 2.5 • Zugriff über: FibPlus
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 ), 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 ?
Gruß
Hansa
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.196 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: Firebird Problem mit Datum

  Alt 29. Dez 2013, 17:44
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.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#3

AW: Firebird Problem mit Datum

  Alt 29. Dez 2013, 18:25
Ich bastele gewiss noch ein Datum zusammen
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
Gruß
Hansa
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#4

AW: Firebird Problem mit Datum

  Alt 29. Dez 2013, 18:32
Ist t eine Stringvariable mit dem Inhalt "29/12/2013"?
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
vagtler

Registriert seit: 9. Jul 2010
Ort: Köln
667 Beiträge
 
Delphi 2010 Professional
 
#5

AW: Firebird Problem mit Datum

  Alt 29. Dez 2013, 18:51
Dann dürfte .AsDate fehlschlagen.
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#6

AW: Firebird Problem mit Datum

  Alt 29. Dez 2013, 19:32
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.

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.
Gruß
Hansa
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#7

AW: Firebird Problem mit Datum

  Alt 29. Dez 2013, 19:35
Nein, muß es nicht, denn das hängt von der Einstellung der Session ab (Regionseinstellungen)
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#8

AW: Firebird Problem mit Datum

  Alt 30. Dez 2013, 13:55
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
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:50 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