PDA

Ver la Versión Completa : formato porcentaje con DBGrid !!!!


david_uh
02-07-2007, 21:43:28
hola a todos
una ayudita porfa
estoy tratando de gestionar una interfaz para una tabla que tiene un campo llamado COMISION en el cual el usuario ingresa el porcentaje Ejem.
comisión: 2 ingresa el numero 2 pero este internamente debe ser guardado como 0.02

Es decir el usuario debe ingresar el procentaje como se lee 2.3% pero internamente este debe almacenarse como 0.023.

Estoy usando Delphi 6 (zeos) y mysql 5 y la interfaz es un DBgrid.

gracias por cualquier aporte

antrahxg
02-07-2007, 21:57:16
Bueno no me quedo muy claro lo que quieres

pero por ejemplo si el usuario introduce 2.3% y quieres que se guarde como 0.023 pues al momeno de guardar la informacion dividela entre 100 y para mostrar el 0.023 como porcentaje al mostrarlo lo multiplicas por 100, por ejemplo


table1.fieldbyname('porcentaje').asfloat:=strtofloat(porcentaje.text)/100

y para mostrarlo

procentaje.text:=floattoStr(table1.fieldbyname('porcentaje').asfloat *100)

david_uh
02-07-2007, 22:02:03
si pero el problema es donde lo programo, estoy usando un dbgrid enlazadoa datos:
en la tabla los datos estan asi
COMISION
0.02
0.04
0.06
de eesta misma forma aparecen n el dbgrid, lo que deseo es que aparezcan asi
COMISION
2 %
4 %
6 %
y que al momento de ingresar un valor en el grid el usuario digite 6 y al presionar enter o moverse a otra fila se actualice a : '6 %' con le símbolo de % pero que el la tabla se grabe como 0.06

gracias por tu respuesta

egostar
02-07-2007, 22:09:59
En la propiedad DisplayFormat del campo pon 0.0%.

Salud OS.

david_uh
02-07-2007, 22:14:18
si con displayformat := 0.000 '%' he conseguido :

DATO REAL SE MUESTRA ASI QUISIEERA QUE SE VEA ASI
0.01 0.01 % 1%


Si el usuario ingresa 7 por ejemplo en la columna comision:

QUE SE GUARDE ASI SE INGRESE ASI SE VEA ASI
0.07 7 7%

Gracias por responder tán rápido. Un saludo

david_uh
02-07-2007, 22:18:43
ok esto es lo que quería decir:
si con displayformat := 0.000 '%' he conseguido :


DATO REAL SE MUESTRA ASI QUISIEERA QUE SE VEA ASI
0.01 0.01 % 1%

Si el usuario ingresa 7 por ejemplo en la columna comision:


QUE SE GUARDE ASI SE INGRESE ASI SE VEA ASI
0.07 7 7%
Gracias por responder tán rápido. Un saludo

Lepe
03-07-2007, 09:41:48
En el evento OnGetText puedes multiplicar por 100.
En el evento OnSetText del campo, puedes dividir por 100.

Con las propiedades DisplayFormat/ EditFormat, consigues añadir el símbolo de porcentaje o eliminarlo al editar (así como el número de decimales que se verán)

Saludos

reevil
03-07-2007, 12:32:10
al guardar como ya te dijeron divides entre 100
y para mostrarlo en el formato que quieres,que tal hacerlo con un query

SELECT concat(porcentaje * 100 , '%') as porcentaje_formateado FROM tabla;

david_uh
03-07-2007, 18:36:47
En el evento OnGetText puedes multiplicar por 100.
En el evento OnSetText del campo, puedes dividir por 100.

ok gracias por todo lo resolvi como me dijiste

procedure TfrmSisPago.tbl_SisPagoDetComisionGetText(Sender: TField;
var Text: String; DisplayText: Boolean);
begin
Text := FormatFloat('#'+DecimalSeparator+'00 %',(Sender.AsCurrency * 100));
end;
procedure TfrmSisPago.tbl_SisPagoDetComisionSetText(Sender: TField;
const Text: String);
begin
Sender.AsFloat := StrToFloat(Text)/100;
end;


con la salvedad que el formato dado a las propiedades displayformat/editformat no funcionan ya que el dato es directamente gestionado por los eventos get y set text

muchas gracias me sirvio de mucho