Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Datum in DB (Firebird) speichern (https://www.delphipraxis.net/59201-datum-db-firebird-speichern.html)

Ati 19. Dez 2005 12:16

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

Datum in DB (Firebird) speichern
 
Mahlzeit,

es mag vielleicht komisch klingen, aber ich schaffe es nicht ein Datum in einer DB zu speichern. Hintergrund ist das das Datum und die Uhrzeit mitgespeichert werden soll, wenn ein Datensatz eingegeben wurde. Die Feldeigenschaften in der DB sind auf Date und Time eingestellt. Ich hatte es so versucht:
Delphi-Quellcode:
var erfdat:TDate;
    zeit:TTime;
begin
  erfdat:=date;
  zeit:=time;
  qrMain.Sql.Clear;
Insert into table (vim, ls, erfdat,erfasser) Values ('''+vim.text+''','''+ls.text+''',+datum+,'''+erf.text+''');';
Kommt aber nur ne Fehlermeldung.

Hansa 19. Dez 2005 12:53

Re: Datum in DB (Firebird) speichern
 
Warum schreibst Du ein Insert-Statement in den Source ? :shock: Das läßt man sein Dataset machen und fertig.

FBrust 19. Dez 2005 12:55

Re: Datum in DB (Firebird) speichern
 
Hi,

hier ein kurzer Ausschnitt aus meinem Quelltext:

Delphi-Quellcode:
                SQL.Text := 'INSERT INTO TBLIPRAW (INTOBJECTID, STRTRANS, ' +
                            'DTDATE, DTTIME) ' +
                            ' VALUES (' +
                            QuotedStr(intTostr(intID)) + ',' +
                            QuotedStr(strNumber) + ',' +
                            QuotedStr(strDate) + ',' +
                            QuotedStr(strTime) + ');';
"strDate" ist hierbei ein einfacher String, z. B. '19.12.05', "strTime" entsprechend '12:33', d. h. Du kannst auch, um bei Deinem Beispiel zu bleiben, folgendes schreiben:

Delphi-Quellcode:
QuotedStr(DateToStr(erfdat))
Hoffe, das hilft Dir weiter.

Generell empfehle ich Dir, anstatt der vielen Hochkommas "QuotedStr()" zu verwenden, erspart das Nachzählen :mrgreen:

Gruß
Frank

Ati 19. Dez 2005 13:00

Re: Datum in DB (Firebird) speichern
 
Verstehe leider Deine Antwort nicht so ganz (bin ja auch noch nicht so fit in DB-Programmierung). Ich kenne es jedenfalls nur so das nach dem Befüllen der einzelnen Felder das ganze per Insert-Befehl in der DB gespeichert wird. Bin aber auch immer offen für was neues.
Ach ja benutze D3 Pro+Zeos 5.5

@FBrust werde das mal so ausprobieren

dataspider 19. Dez 2005 13:03

Re: Datum in DB (Firebird) speichern
 
Hi,
ich würde ein Feld vom Typ TimeStamp anlegen.
Damit reicht es, wenn du als DEFAULT CURRENT_TIMESTAMP angibst.
Somit steht das Datum und die Zeit automatisch drin.
Gruß, Frank

FBrust 19. Dez 2005 13:14

Re: Datum in DB (Firebird) speichern
 
Hi,

ich mache nichts anderes als Du, in Deinem Quelltext oben fehlt vor der Insert-Anweisung noch ein SQL.Text := , d. h. zuerst wird der SQL-Text der Abfrage mit SQL.Clear gelöscht, dann wird ein neuer Text zugewiesen.

Dein Statement müsste also lauten:

Delphi-Quellcode:
  erfdat := date;
  zeit := time;
  qrMain.Sql.Clear;
  qrMain.SQL.Text := 'Insert into table (vim, ls, erfdat,erfasser) Values (' +     
    QuotedStr(vim.text) + ', ' + 
    QuotedStr(ls.text) + ', ' + 
    QuotedStr(DateToStr(datum) + ' ,' + 
    QuotedStr(erf.text) + ');';
  qrMain.ExecSQL;

Gruß
Frank

Edit: Grammatik korrigiert

Ati 19. Dez 2005 13:23

Re: Datum in DB (Firebird) speichern
 
Schon klar. Hatte diesen kleinen Zusatz ja auch dabei habe ihn nur nicht geschrieben. Habe zur Zeit noch ein paar Problemchen deswegen kann ich noch nicht sagen ob alles funktioniert. Das Problem ist das eine komplette Reklamation aus insgesamt 17 Felder besteht. Bei der Meldung werden allerdings nur 11 ausgefüllt und das speichern dieses "halben" Datensatzes klappt noch nicht. Werde da also ein bischen experimentieren müssen!!


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