Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi SQL Update ParamByName().AsFloat -> Truncated for Column (https://www.delphipraxis.net/91666-sql-update-parambyname-asfloat-truncated-column.html)

TUX_der_Pinguin 8. Mai 2007 13:28

Datenbank: MySQL • Version: 5 • Zugriff über: dbExpress

SQL Update ParamByName().AsFloat -> Truncated for Column
 
Hallo,

ich verwende Turbo Delphi und einen freien dbExpress Treiber um auf meine MySQL 5 Datenbank zugreifen zu können.
Alles super jedoch wenn ich ein Update auf eine Spalte wage die als FLOAT(10,2) definiert ist, kommt es zu
problemen.

Delphi-Quellcode:
procedure TfrmMain.Button1Click(Sender: TObject);
var
  SQLQuery : TSQLQuery;

begin
  SQLQuery              := TSQLQuery.Create(Self);
  SQLQuery.SQLConnection := SQLCon;

  SQLQuery.SQL.Text := 'UPDATE Liste SET Preis=:Preis WHERE ID=:ID LIMIT 1';
  SQLQuery.ParamByName('ID').AsInteger := 478;
  SQLQuery.ParamByName('Preis').AsFloat := 25.95;
  SQLQuery.ExecSQL;

  SQLQuery.Close;
  SQLQuery.Free;

end;
Jedoch bekomme ich immer folgende Fehlermeldung, ich versteh nur nicht wieso.

Zitat:

Datenbank-Server-Fehler: Data truncated for column 'Preis' at row 1.
Wenn ich "SQLQuery.ParamByName('Preis').AsString := '25.95'" schreibe funktioniert es.
Aber es kann doch nicht im sinne des Erfinders sein.

Ach ja und Dezimaltrennzeichen habe ich in Delphi auf '.' geändert.

mfg

TUX

Udontknow 8. Mai 2007 13:57

Re: SQL Update ParamByName().AsFloat -> Truncated for Col
 
Hallo!

Evtl. ist das nicht wirklich ein Fehler, sondern eine Warnung vom SQL-Server, die aber in Delphi dann eben eine Exception auslösen. Etwas ähnliches habe ich bei DB2 erlebt, wo der Server mich drauf hingewiesen hatte, daß ich ein ';' am Ende meines Select-Statements habe, nachdem er es fehlerfrei ausgeführt hatte. Vielleicht kannst du in der Datenbank-Komponente per Parameter bestimmen, daß Warnungen nicht an die Clientapplikation gesendet werden sollen?

Cu,
Udontknow

Gruber_Hans_12345 8. Mai 2007 13:59

Re: SQL Update ParamByName().AsFloat -> Truncated for Col
 
oder eventuell ein floating problem, das die 25.95 intern mit vielen vielen nachkommastellen dargestellt werden, und die DB Komponente dann sagt, das es nachkommastellen abschneiden muß?

mkinzler 8. Mai 2007 13:59

Re: SQL Update ParamByName().AsFloat -> Truncated for Col
 
Versuch mal
Delphi-Quellcode:
SQLQuery.ParamByName('Preis').Value := 25.95;


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