Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Current_Time-Problem mit Firebird (https://www.delphipraxis.net/76045-current_time-problem-mit-firebird.html)

Ati 29. Aug 2006 08:41

Datenbank: Firebird • Version: 1.5 • Zugriff über: SQLdb

Current_Time-Problem mit Firebird
 
Hallo zusammen,

ich lasse in meinen Anwendungen das Erfassungsdatum und die Erfassungszeit per TRIGGER speichern.
Wenn ich jetzt die Datensätze abrufe erscheint aber im Feld "Erfassungszeit" die Uhrzeit mit einem Datum (Bsp. "30.12.1899 9.05"). Wie kann ich das ändern bzw. beim 'SELECT' korrigieren?

chaosben 29. Aug 2006 08:44

Re: Current_Time-Problem mit Firebird
 
Hmmm .. das sind ziemlich wenige Informationen für einen eindeutige Analyse.

Sag uns doch mal, wie die Tabelle aufgebaut ist und den Code, mit dem du die Zeit reinschreibst und mit dem du sie wieder lesen willst.

Ati 29. Aug 2006 08:50

Re: Current_Time-Problem mit Firebird
 
Ok. Hier mal der Trigger.
Delphi-Quellcode:
CREATE TRIGGER REKLAMATIONEN_BI FOR REKLAMATIONEN
ACTIVE BEFORE INSERT POSITION 0
AS
BEGIN
  IF (NEW.ID IS NULL) THEN
    NEW.ID = GEN_ID(GEN_REKLAMATIONEN_ID,1);
    new.rekdat=current_date;
    new.rekuhr=current_time;
END
Das Feld 'REKDAT' ist vom Feldtyp 'DATE' und 'REKUHR' vom Feldtyp 'TIME'.

Der Abruf der Daten erfolgt ganz normal per:
Delphi-Quellcode:
SELECT * from REKLAMATIONEN
Hoffe habe alles an Info´s gegeben.

mkinzler 29. Aug 2006 08:54

Re: Current_Time-Problem mit Firebird
 
Was meinst du mit "beim select korrigieren?" Willsr du das Datum in der Anzeige verändern oder in der Datenbank, wie willst due korrigieren?

Ati 29. Aug 2006 09:03

Re: Current_Time-Problem mit Firebird
 
Habe mir nochmal den Eintrag direkt in der DB angeschaut..seltsamer Weise steht dort nur die Uhrzeit. Es könnte natürlich ml wieder eine kleine Besonderheit von Lazarus sein oder hat jemand mit Delphi ähnliche Erfahrungen gemacht?

@mkinzler
Ich denke wenn ich die Darstellung manipulieren muß dann doch wohl in der Anzeige des DB-Grids oder?

Lemmy 29. Aug 2006 09:09

Re: Current_Time-Problem mit Firebird
 
Hi,

Delphi kennt (leider) nur noch den Typ TDateTime. TDate und TTime sind davon "abgeleitet", d.h. TDate und TTime sind ebenfalls vom Typ TDateTime. Somit erhälst Du bei einem TTime immer auch den TDate-Anteil zurück. Wenn Du das von Hand anzeigst, kannst Du darauf Einfluss nehmen, in einem DB-Grid siehts schlechter aus. Du kannst höchstens bei der TDataSet die Du einsetzt alle Felder erzeugen und versuchen dort einzustellen, dass Du ein TTime-Feld hast.

Die Anzeige ist im übrigen völlig korrekt: TDateTime ist ein einfacher Double. Die Zeit wird dabei als Nachkommastellen gespeichert, somit ist die Zahl vor dem Komma die Anzahl der Tage seit dem 31.12.1899.

Grüße
Lemmy

Ati 29. Aug 2006 09:21

Re: Current_Time-Problem mit Firebird
 
Na bitte. Es gibt zwar auch bei Lazarus zwei verschiedene Formen von DataSet´s allerdings habe ich damit noch nie gearbeitet (ist ja schließlich auch erst mein erstes größeres DB-Projekt). Werde mich dann wohl mal einlesen müssen.

Ati 29. Aug 2006 09:44

Re: Current_Time-Problem mit Firebird
 
Ha. Es ging auch einfacher. In der Item-Eigenschaft des entsprechenden Feldes gab es einen Punkt "DisplayFormat" hier habe ich mal aus jux "hh:mm" eingetragen und siehe da es funktionierte.


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:25 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