Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Coloboración Paypal con ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 17-03-2004
Avatar de merlin
merlin merlin is offline
Miembro
 
Registrado: nov 2003
Posts: 64
Poder: 23
merlin Va por buen camino
Unhappy problemas con un stringgrid

hola delphimaniacos!!

Bueno pues resulta q tengo un pequeño problemilla y es el siguiente tengo un stringgrid y quiero q los datos de una operacion q realizo tengan un cierto formato (10 digitos en la parte entera y 2 en la decimal) y lo he echo asi:
stringgrid1.Cells[5,i]:=floattostrf(MAT.fieldbyname('unidadesar').ASFLOAT*
(1/TABLE1.FIELDBYNAME 'U_CONVERT').ASFLOAT),ffFixed,10,2);

pero no me da el resultado q yo esperaba xq me redondea y no me da los dos decimales entoces mi pregunta es ¿hay algo mal en el codigo? o ¿de q otra manera se puede hacer esto?

Gracias y un saludo.
__________________
.:|Merlin|:.
Responder Con Cita
  #2  
Antiguo 17-03-2004
__cadetill __cadetill is offline
Miembro
 
Registrado: may 2003
Posts: 3.387
Poder: 27
__cadetill Va por buen camino
Prueba con FormatFloat('#.##0.00', Numero)
Responder Con Cita
  #3  
Antiguo 17-03-2004
Avatar de merlin
merlin merlin is offline
Miembro
 
Registrado: nov 2003
Posts: 64
Poder: 23
merlin Va por buen camino
Unhappy

he probado con lo q me ha dicho cadetill y no ha funcionado alguna otra idea??
__________________
.:|Merlin|:.
Responder Con Cita
  #4  
Antiguo 17-03-2004
Avatar de Nuria
Nuria Nuria is offline
Miembro
 
Registrado: may 2003
Posts: 531
Poder: 24
Nuria Va por buen camino
Hola Merlin!

Prueba con esto:

Código:
  var
      Resultado : Double;
  ///

  Resultado:= MAT.fieldbyname('unidadesar').ASFLOAT*
                   (1/TABLE1.FIELDBYNAME 'U_CONVERT').ASFLOAT;

  stringgrid1.Cells[5,i]:= FloatToStr(Resultado);

 ///
No lo he podido probar pero igual así funciona.

Saludos!
Responder Con Cita
  #5  
Antiguo 17-03-2004
Avatar de merlin
merlin merlin is offline
Miembro
 
Registrado: nov 2003
Posts: 64
Poder: 23
merlin Va por buen camino
Hola Nuria!

Muxas gracias por responderme, pero te tengo q decir q esa opcion ya la habia probado yo y aunq la he vuelto a probar por asegurarme no ha funcionado. Se os ocurre otra manera??
__________________
.:|Merlin|:.
Responder Con Cita
  #6  
Antiguo 17-03-2004
__cadetill __cadetill is offline
Miembro
 
Registrado: may 2003
Posts: 3.387
Poder: 27
__cadetill Va por buen camino
Cita:
Empezado por merlin
he probado con lo q me ha dicho cadetill y no ha funcionado alguna otra idea??
Pero... qué significa que no ha funcionado?
Responder Con Cita
  #7  
Antiguo 17-03-2004
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por cadetill
Pero... qué significa que no ha funcionado?
De la rae:

Cita:
1. intr. Dicho de una persona, de una máquina, etc.: Ejecutar las funciones que le son propias.
2. intr. Ir, marchar o resultar bien. El negocio funciona como esperaba.
O sea, que lo que le dijiste no ejecuta las funciones que le son propias y por tanto su negocio no funcionará como esperaba.

Responder Con Cita
  #8  
Antiguo 18-03-2004
Avatar de merlin
merlin merlin is offline
Miembro
 
Registrado: nov 2003
Posts: 64
Poder: 23
merlin Va por buen camino
Bueno la cosa sigue = he probado lo q cadetill me puso y no me da ningun error, pero no hace lo q deberia hacer, (eso es q no ha funcionado), se os ocurre el xq? o como hacerlo de otra manera lo mas curioso esq si el valor de la celda del stringgrid lo introduzco en un showmessage para ver q es lo q contiene antes de insertarlo si q es el correcto pero cuando se termina la ejecucion no se muestra ese valor en la celda sino q se ha redondeado.

Sabeis xq me puede estar pasando esto??
__________________
.:|Merlin|:.
Responder Con Cita
  #9  
Antiguo 18-03-2004
__cadetill __cadetill is offline
Miembro
 
Registrado: may 2003
Posts: 3.387
Poder: 27
__cadetill Va por buen camino
Acabo de probarlo y me ha funcionado sin problemas

Código:
procedure TForm1.Button1Click(Sender: TObject);
var
  s: string;
begin
  s := FormatFloat('#,##0.00', 12.2352);
  stringgrid1.Cells[4,2]:= s;
  stringgrid1.Cells[4,3]:= FormatFloat('#,##0.00', Trunc(12.2352 * 100) / 100);
end;
Eso sí, hay que tener en cuenta que FormatFloat redondea, por lo que si queremos los dos últimos decimales tal cual, hay que hacer la operación de Trunc(valor * 100) / 100

Espero te sirva
Responder Con Cita
  #10  
Antiguo 18-03-2004
Avatar de merlin
merlin merlin is offline
Miembro
 
Registrado: nov 2003
Posts: 64
Poder: 23
merlin Va por buen camino
Cadetill muxas gracias por tu paciencia y por tu ayuda pero creo q todavia no lo he solucionado.

He exo lo siguiente:

Resultado:=com.fieldbyname('cantidad_r').asfloat*(1/TABLE1.FIELDBYNAME('U_CONVERT').ASFLOAT);

stringgrid1.Cells[3,i]:= FormatFloat('#,##0.00', Trunc(RESULTADO * 100) / 100);

Pero no ha servido de nada sigue apareciendo la cantidad redondeada.



Tb he probado con esto y me pasa lo mismo q la cantidad aparece redondeada
stringgrid1.Cells[3,i]:= floattostrf(resultado,fffixed,10,2);

hay algo mas por proba o hacer?
__________________
.:|Merlin|:.
Responder Con Cita
  #11  
Antiguo 18-03-2004
__cadetill __cadetill is offline
Miembro
 
Registrado: may 2003
Posts: 3.387
Poder: 27
__cadetill Va por buen camino
Vamos a ver que entiendes por redondeado y contestame a estas preguntillas

Qué valor tiene Resultado despues de la operación?
Qué valor te devuelve FormatFloat?

Es que eso te ha de funcionar!!!
Responder Con Cita
  #12  
Antiguo 18-03-2004
Avatar de merlin
merlin merlin is offline
Miembro
 
Registrado: nov 2003
Posts: 64
Poder: 23
merlin Va por buen camino
redondeo
1,52 se redondea a 2
1,25 se redondea a 1
eso es lo q entiendo yo por redondear.


Resultado despues de la operación es 26,15 pero cuando se muestra en el stringgrid es 26

FormatFloat devuelve 26,15

Un saludo, merlin
__________________
.:|Merlin|:.
Responder Con Cita
  #13  
Antiguo 18-03-2004
__cadetill __cadetill is offline
Miembro
 
Registrado: may 2003
Posts: 3.387
Poder: 27
__cadetill Va por buen camino
Mira en configuración regional lso separadores de miles y decimales que tengas configurados. Si el problema es ese, puedes solucionarlo así

Código:
var
  OldDS, OldTS: Char;
begin
  OldDS := DecimalSeparator;
  OldTS := ThousandSeparator;
  DecimalSeparator := '.';
  ThousandSeparator := ',';

  // operaciones

  DecimalSeparator := OldDS;
  ThousandSeparator := OldTS;
end;
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 23:52:17.


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