Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Firebird Dezimaltrennzeichen (https://www.delphipraxis.net/131465-firebird-dezimaltrennzeichen.html)

deadcantdance 25. Mär 2009 09:33

Datenbank: Firebird • Version: 2.1 • Zugriff über: IBX

Firebird Dezimaltrennzeichen
 
Hi,

kann man in Firebird das Dezimaltrennzeichen, ähnlich wie bei Oracle, ändern?

Viele Grüße,
deadcantdance

mkinzler 25. Mär 2009 09:52

Re: Firebird Dezimaltrennzeichen
 
Diese sind in der DB systemunabhängig abgelegt. Das Problem liegt also an den Systemeinstellungen des Client.

deadcantdance 25. Mär 2009 10:19

Re: Firebird Dezimaltrennzeichen
 
Hmm, deutsches XP SP3 mit deutschen Regionalsettings, folgender Insert klappt nicht "Insert into TBTest (ID, Floatvalue) values (1, "0,02").

Fehlermeldung ist "Conversion error from string"

DeddyH 25. Mär 2009 10:21

Re: Firebird Dezimaltrennzeichen
 
Du übergibst ja auch einen String. Allerdings wäre es generell besser, Dein SQL/DML zu parametrisieren, dann musst Du Dir über das Format keine Gedanken machen.

mkinzler 25. Mär 2009 10:27

Re: Firebird Dezimaltrennzeichen
 
Also:
SQL-Code:
Insert into TBTest (ID, Floatvalue) values (1, :wert);
...
Delphi-Quellcode:
DataSet.ParamByName('wert').Value := 0,02;

DeddyH 25. Mär 2009 10:28

Re: Firebird Dezimaltrennzeichen
 
Zitat:

Zitat von mkinzler
Delphi-Quellcode:
DataSet.ParamByName('wert').Value := 0,02;

Aber bitte mit Punkt statt Komma ;)
Delphi-Quellcode:
DataSet.ParamByName('wert').Value := 0.02;

deadcantdance 25. Mär 2009 10:39

Re: Firebird Dezimaltrennzeichen
 
Natürlich wären Parameter die bessere Lösung. Aber bei einer über die Jahre gewachsenen Anwendung ist das nicht in ein oder zwei Tagen erledigt.

Die Frage ist, warum das Insert als String nicht klappt...

DeddyH 25. Mär 2009 10:44

Re: Firebird Dezimaltrennzeichen
 
Und wenn Du hier auch den Dezimaltrenner umstellst?
SQL-Code:
Insert into TBTest (ID, Floatvalue) values (1, "0.02")
Oder gleich als Zahl übergibst
SQL-Code:
Insert into TBTest (ID, Floatvalue) values (1, 0.02)

deadcantdance 25. Mär 2009 10:51

Re: Firebird Dezimaltrennzeichen
 
Ich möchte den DecimalSeparator ungern umbiegen, da ich erstens aus mehreren Threads auf die DB zugreife und andere Komponenten ebenfalls den DS nutzen.

Bei Oracle kann ich doch auch einfach NLS_Numeric_Characters setzen und bin fertig, gibt es sowas bei Firebird nicht?

mkinzler 25. Mär 2009 10:53

Re: Firebird Dezimaltrennzeichen
 
Notfalls halt eine UDF basteln


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