![]() |
Datenbank: FireBird • Version: 2.5 • Zugriff über: FibPlus
FireBird, Datentyp TIME clientseitig mit Delphi bestücken
Moin,
ich habe hier mit einer Datentpalte zutun, die vom Typ "TIME" ist. Wie setze ich deren Wert clientseitig in meiner Delphi-Anwendung? Gebe ich einen Timestamp, der nur einen Zeit-, aber keinen Datumswert enthält, bekomme ich einen Fehler, dass der Wert ungültig sei. Auch Tests mit fixen Ganz- oder Fließkommazahlen schlugen fehl. Nicht mal eine 0 (Zahlenwert) wird akzeptiert. Ich hatte gehoft, dass ich auch diesen Wert wie üblich mit
Delphi-Quellcode:
setzen kann. :gruebel:
FieldByName('...').Value:= xy
|
AW: FireBird, Datentyp TIME clientseitig mit Delphi bestücken
Hallo Daniel,
kann es vielleicht etwas mit dem Variant zu tun haben? Hast mal versucht native Zugriffs-Properties ala AsDateTime ... zu verwenden? |
AW: FireBird, Datentyp TIME clientseitig mit Delphi bestücken
Ja, .AsDateTime habe ich auch versucht - ohne Erfolg.
Ich sehe gerade, dass FibPlus ein .AsTime anbietet, laut Doku aber nur in der Query und nicht im DataSet - mal schauen, ob das so (noch) stimmt. |
AW: FireBird, Datentyp TIME clientseitig mit Delphi bestücken
Hi,
Zitat:
Grüße |
AW: FireBird, Datentyp TIME clientseitig mit Delphi bestücken
@Daniel: Kriegst du eine Delphi oder eine Firebird Exception? Da der TIME Datentyp mit Dialect 3 zur Verfügung steht ist die Frage, ob du dich mit FIBPlus auch mit Dialect 3 verbindest?
|
AW: FireBird, Datentyp TIME clientseitig mit Delphi bestücken
Bei mir klappt ein:
Code:
Bei folgender Firebird 2.5.1 Dialect 3 Tabelle:
DBGrid1.DataSource.DataSet.FieldByName('MYTIME').AsDateTime := Now;
Code:
ohne Probleme. Verwende allerdings IBDAC 4 mit Delphi 2010.
CREATE TABLE T1
( ID BIGINT NOT NULL, MYTIME TIME, CONSTRAINT PK_T1 PRIMARY KEY (ID) ); |
AW: FireBird, Datentyp TIME clientseitig mit Delphi bestücken
Ich werde das Szenario gleich mal auf ein Mini-Beispiel herunter brechen. Möglicherweise läuft hier irgendwas anderes schief, da der Datentyp des Felds korrekt als ftTime erkannt wird, aber keine der hier bisher genannten Zuweisungen funktionieren wollte.
Den SQL-Dialekt werde ich prüfen - ich habe das Projekt übernommen und wenn diese falsch gesetzt wäre, dann würde dies bedeuten, dass dem schon sehr lange Zeit so gewesen sein muss. Vielen Dank schon mal für das Ausprobieren. :-) |
AW: FireBird, Datentyp TIME clientseitig mit Delphi bestücken
Wenn die Datenbank schon alt ist ( aus IB Zeiten), dann bleibt der Dialect 1 bestehen.
|
AW: FireBird, Datentyp TIME clientseitig mit Delphi bestücken
Also FibPlus verbindet sich explizit mit Dialekt 3. Das Feld steht ja auch so in der DB und wenn ich den Wert via Trigger zuweise (ich greife dazu auf CURRENT_TIMESTAMP zu), dann geht's auch und sowohl IBExpert als auch meine eigene Anwendung zeigen den korrekten Wert.
|
AW: FireBird, Datentyp TIME clientseitig mit Delphi bestücken
Welchen Datentyp hat denn das persistente Feld when ftTime gesetzt ist? Bei mir wird ein persistentes Feld als TTimeField erstellt, wo dann FieldKind auf fkData gesetzt ist. Würd das wirklich mal mit einem einfachen Beispiel versuchen nachzubilden.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:05 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