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
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
vBulletin v3.6.8, Derechos ©2000-2024, Jelsoft Enterprises Ltd.