Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   transformar millones en decimal (https://www.clubdelphi.com/foros/showthread.php?t=63701)

TrUnkS 26-02-2009 17:50:21

transformar millones en decimal
 
Hola amigos. Tengo una base en access llena de numeros en millones, es decir, de la forma 1.234.567 pero sin los puntos, son numeros enteros. lo que quiero es agregar el caracter ',' despues de la primera cifra para que quede como numero decimal, osea que quede de la forma 1,234567. Mi idea es transformar el numero a una cadena y agregar el caracter ',' trasladando el resto de los caracteres hacia la derecha pero no he podido conseguirlo. Si alguien tiene alguna funcion o idea le estaria agradecido.

Neftali [Germán.Estévez] 26-02-2009 18:36:20

(1) Pasa el número a string
(2) Coge el primer caracter Str[1]
(3) Añádele la COMA ','
(4) Añadele el resto de la cadena (función COPY)

Código Delphi [-]
Copy(Str,2, Lenght(Str));

ContraVeneno 26-02-2009 18:42:46

¿y si solo cambias el tipo de dato de tu campo a un tipo monetario? (currency, money, incluso Float debe servir)

TrUnkS 26-02-2009 19:03:49

muchas gracias por la ayuda pude resolverlo:
Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
var Str: String;
    CADENA: String;
begin
 ADOTable.Open;
 ADOTable.First;
 while ADOTable.Eof = False do
  begin
     Str := FloatToStr(ADOTableCAMPO.AsFloat);
     CADENA := Str[1] + ',' + Copy(Str,2, Length(Str));
     ADOTable.Edit;
     ADOTableCH5.AsFloat := StrToFloat(CADENA);
     ADOTable.Post;
     ADOTable.Next;
  end;
end;

TrUnkS 26-02-2009 19:33:15

El problema que tengo es con los numeros negativos, por ejemplo -1.234.567, pues no me los reconoce como float ni como entero y no hace la operacion, en fin es raro.

Neftali [Germán.Estévez] 26-02-2009 23:06:48

Cita:

Empezado por TrUnkS (Mensaje 339477)
...es con los numeros negativos, por ejemplo -1.234.567, pues no me los reconoce como float ni como entero y no hace la operacion, en fin es raro.


No es raro, es normal. No comentaste nada de los negativos.
Al coger:
Código Delphi [-]
Str[1]

Estás quedándote con el SIGNO - , no con el primer número. En ese caso debería hacer:

Código Delphi [-]
Str[1] + Str[2] + ',' + Copy(Str,3, Lenght(Str));

TrUnkS 27-02-2009 14:40:31

Gracias Neftali también lo había solucionado asi. Gracias


La franja horaria es GMT +2. Ahora son las 20:35:36.

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