![]() |
Datenbank: Postgre • Version: 9 • Zugriff über: ADO
Probleme mit ADO und timestamp
Hallo,
ich möchte gerne Daten von einem Meßgerät in meine Datenbank schreiben. Hierbei ist bei mir folgendes Problem aufgetreten: Ich verwende einen Timer welcher alle 30 Sek den wert in die Datenbank schreiben soll. Die Datenbank hat 3 Spalten: - id (bigserial) - value (real) - obtime (timestamp without timezone)
Delphi-Quellcode:
nun erhalte ich die Fehlermeldung: "Typname ist ungültig"
procedure TForm1.timerTimer(Sender: TObject);
var H,M,S,ms : Word; aktzeit : ttime; aktdatetime : tdatetime; begin // auf 30 Sekunden runden Decodetime(now, H, M, S, ms); S := (S div 30) * 30; aktzeit := Encodetime(H, M, S, ms); aktdatetime := strtodatetime(datetostr(now) + ' ' + timetostr(aktzeit)); // In Datenbank speichern sql.SQL.Clear; sql.SQL.Text := 'INSERT INTO "' + SQLtabelle + '" ("obtime", "value") VALUES (:obtime, :value);'; sql.Parameters.ParamByName('obtime').Value := aktdatetime; sql.Parameters.ParamByName('value').Value := aktwert; sql.ExecSQL; end; Wenn ich den sql Befehl nur mit value ausführe, funktioniert es. Ich bin für jede Hilfe sehr dankbar. MfG Willy |
AW: Probleme mit ADO und timestamp
Hallo...
Delphi-Quellcode:
... würde das nicht reichen ? EncodeTime gibt ja einen DateTime zurück :zwinker:
Decodetime(now, H, M, S, ms);
S := (S div 30) * 30; aktdatetime := Encodetime(H, M, S, ms); |
AW: Probleme mit ADO und timestamp
Delphi-Quellcode:
Hinter Values fehlt eine Klammer-Auf "(".
sql.SQL.Text := 'INSERT INTO "' + SQLtabelle + '" ("obtime", "value") VALUES :obtime, :value);';
|
AW: Probleme mit ADO und timestamp
Zitat:
|
AW: Probleme mit ADO und timestamp
Woher weiß ADO, das es sich bei 'obtime' um einen Timestamp (=Datetime) handelt? So schlau ist es nicht; Du solltest den Parameter noch Datentypen spendieren.
|
AW: Probleme mit ADO und timestamp
Zitat:
Kann es aber sei das Value ein SQL-Schlüsselwort ist? Bennen mal deinen zweiten Parameternamen um. |
AW: Probleme mit ADO und timestamp
Vieleicht ist ja das hilfreich...
![]() Zitat:
|
AW: Probleme mit ADO und timestamp
Ok hab jetzt den Parameter definiert, es funktioniert aber immer noch nicht.
Delphi-Quellcode:
Nun erscheint die Fehlermeldung: "Die anwendung verwendet für den aktuellen vorgang einen Wert vom falschen Typ."
procedure TForm1.timerTimer(Sender: TObject);
var aktdatetime : tdatetime; begin aktdatetime := now; // In Datenbank speichern sql.SQL.Clear; sql.SQL.Text := 'INSERT INTO "' + SQLtabelle + '" ("obtime", "value") VALUES (:obtime, :value);'; sql.Parameters.CreateParameter('obtime', ftdatetime, pdinput, 8, ''); sql.Parameters.ParamByName('obtime').Value := formatdatetime('yyy-mm-dd hh:nn:ss', aktdatetime); sql.Parameters.ParamByName('value').Value := aktwert; sql.ExecSQL; end; Verwende ich statt ftdatetime, fttimestamp kommt die fehlermeldung : Parameter falsch definiert. ich hab es auch mit formatdatetime('yyy-mm-dd hh:nn:ss', aktdatetime) schon versucht aber es funktioniert nicht. Welchen typ muss aktdatetime haben? |
AW: Probleme mit ADO und timestamp
probiere nochmal deine Varianten ohne als Parameter das Wort "Value" zu benutzen... wie Bernhard schon sagte :zwinker:
Delphi-Quellcode:
...z.B
VALUES (:obtime, :aValue)
Nachtrag: der Feldname heißt auch Value :shock: Ohne es genau zu wissen... das ist bestimmt ein reserviertes Wort und damit als Feldname unbrauchbar. Den problematischen Feldnamen zu quoten könnte die Eselsbrücke sein... |
AW: Probleme mit ADO und timestamp
geht auch nicht :(
Delphi-Quellcode:
procedure TForm1.timerTimer(Sender: TObject);
var aktdatetime : tdatetime; begin aktdatetime := now; // In Datenbank speichern sql.SQL.Clear; sql.SQL.Text := 'INSERT INTO "' + SQLtabelle + '" ("obtime") VALUES (:obtime);'; sql.Parameters.CreateParameter('obtime', ftdatetime, pdinput, 8, ''); sql.Parameters.ParamByName('obtime').Value := aktdatetime; sql.ExecSQL; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:48 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