Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Umwandlung Float in Varchar (https://www.delphipraxis.net/150534-umwandlung-float-varchar.html)

dataspider 20. Apr 2010 08:29

Datenbank: Firebird • Version: 2.13 • Zugriff über: IBDac

Umwandlung Float in Varchar
 
Hi,

ich muss einen Float - Wert in seine Besatndteile zerlegen.
Dafür habe ich mir eine SP geschrieben.

Leider ist das Verhalten bezüglich der Umwandlung in Firebird unterschiedlich.

Der Test mit folgendem Statement liefert das gewünschte Ergebnis:
SQL-Code:
select lpad(trunc(10077.34), 6, '0') from rdb$database
Ergebnis: 010077

Das gleiche aus der SP:
SQL-Code:
create procedure TRUS_ARTIKELNUMMER (
    WERT type of WAEHRUNG)
returns (
    NUMMER type of VARCHAR6,
    ZUSATZ type of VARCHAR2)
as
begin
  nummer = lpad(trunc(:wert), 6, '0');
  zusatz = lpad(trunc((:wert - trunc(:wert)) * 100), 2, '0');
  suspend;
end
liefert dann aber:
10077.

Wie wandelt man Integer in Varchar ohne den Tausender - Punkt.

Frank

soulies 20. Apr 2010 10:21

Re: Umwandlung Float in Varchar
 
hi,

in mysql funzt folgendes:

Format(wert,anzahl nachkommastellen) -> ergebnis als string

Bsp:
Format(210.40,0) = 210


Vllt. kannst du eine ähnliche Funktion in FB benutzen .


Soulies

dataspider 20. Apr 2010 11:31

Re: Umwandlung Float in Varchar
 
Hi,

Format gibt es in Firebird nicht.
Wenn ich aber das Statement auflöse und den Umweg über eine Variable mache, dnn geht es:

SQL-Code:
create procedure TRUS_ARTIKELNUMMER (
    WERT type of WAEHRUNG)
returns (
    NUMMER type of VARCHAR6,
    ZUSATZ type of VARCHAR2)
as
declare variable TEMP INTEGER$;
begin
  temp = trunc(:wert);
  nummer = lpad(:temp, 6, '0');
  zusatz = lpad(trunc((:wert - trunc(:wert)) * 100), 2, '0');
  suspend;
end
Und der Punkt ist auch der Dezimalpunkt...

Ist zwar verwirrend, aber funktioniert so.

Danke

Frank


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