Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   Formato plano de decimales (https://www.clubdelphi.com/foros/showthread.php?t=60401)

Drahcir 01-10-2008 11:22:01

Formato plano de decimales
 
Hola a todos,

Tengo que generar un finero plano de texto (tomo los datos de una query desde un procedimiento almacenado) en el que varios campos son importes con decimales.

ej: 250,00
36654,01
457487,25

Tengo que mostrar:

000000000025000
000000003665401
000000045748725

El caso es que al hacerlo mediante un procedimiento almacenado e introducir los valores en una variable el 250,00 me lo toma como 250 a secas y soy incapaz de tratar los datos en el SQL para que me los muestre correctamente.

Alguien tiene alguna idea??

Muchas gracias y un saludo.

tcp_ip_es 01-10-2008 11:48:23

Pues al meterlos en la variable multiplicalos por 100 de manera que:

250,00 * 100 = 25000
36654,01 * 100 = 36654001
457487,25 * 100 = 45748725

P.D.1. Claro eso es si sabes que son siempre dos decimales
P.D.2. Luego para los ceros ...
Código Delphi [-]
limite:= 15-length(Numero)
while i< limite do
begin
Numero:= '0' + Numero;
inc(i);
end

Lepe 01-10-2008 11:50:17

Cuando pongas una duda en el foro SQL, por favor, dí que Base de datos usas, ya que puede ser distinto de uno a otro.

Yo creo que no lo he entendido, ya que 250 es igual que 250.00 (uno es integer y el otro float... quizás ahí esté el fallo).

Por otro lado ese SP que usas, ¿podrías ponerlo con etiquetas SQL?

Por ahí están las rfunc (UDF) para interbase/Firebird que tienen una función FloatToStr(number, decimals)

Quizás en tu motor haya otra forma.

Saludos

ContraVeneno 01-10-2008 14:40:42

¿lo quieres hacer en Delphi o todo en SQL? si es en SQL, ¿en que motor?

en Delphi esto:
Cita:

Empezado por tcp_ip_es (Mensaje 317367)
Código Delphi [-]
limite:= 15-length(Numero)
while i< limite do
begin
Numero:= '0' + Numero;
inc(i);
end

Se puede hacer así:
Código Delphi [-]
Format('%.15d', Valor);

tcp_ip_es 01-10-2008 15:43:15

yo es que siempre lo hago a la cuenta la vieja ;) aunque esta bien simplificar


P.D. He probado lo de
Código Delphi [-]
Format('%.15d', Valor);
y no me funciona :confused:

ContraVeneno 01-10-2008 16:58:21

Cita:

Empezado por tcp_ip_es (Mensaje 317419)
yo es que siempre lo hago a la cuenta la vieja ;) aunque esta bien simplificar
P.D. He probado lo de Format('%.15d', Valor);
y no me funciona :confused:

Prueba con:
Código Delphi [-]
 showmessage( Format('%.5d', [5]));

tcp_ip_es 02-10-2008 07:36:01

ok gracias. Funcionando.

Drahcir 10-10-2008 15:45:28

Gracias a todos, siento no haber respondido antes. Multiplicándolos por 100 después de haberlos dejado con 2 decimales me sirve perfectamente.

Saludos.


La franja horaria es GMT +2. Ahora son las 08:08:48.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi