PDA

Ver la Versión Completa : columna calculada


gianfranco_tont
15-03-2012, 22:51:32
tengo dos columnas autocalculada en un dbgrid pero tengo un problema con la sentencia de calculos:

CDSDATA.FieldByName('Totaliva').AsFloat:= // campo calculado
CDSDATA.FieldByName('total_art').AsInteger *
CDSDATA.FieldByName('PREC_VTA').asinteger *
CDSDATA.FieldByName('tipo_imp').AsFloat / 100; //Aquí es donde me da el error
CDSDATA.FieldByName('Totalrenglon').AsFloat:= //campo calculado
CDSDATA.FieldByName('PREC_VTA').AsFloat *
CDSDATA.FieldByName('total_art').AsInteger +
CDSDATA.FieldByName('totaliva').AsFloat;


tengo un campo (tipo_imp) donde me muestra el porcentaje de iva '12'

ecfisa
15-03-2012, 23:22:08
Hola.

Siempre es conveniente poner literalmente el error que recibes ya que nos ayuda orientarnos sobre el problema.

Una pregunta: ¿ De que tipo es el campo tipo_imp ?

Saludos.

gianfranco_tont
16-03-2012, 03:37:14
decimal(10, 3)
el error es is not valid floating point value

kapcomx
17-03-2012, 00:27:55
amigo gianfranco_tont y que tal si ese error es por que tu campo tiene un valor nulo, lo tienes restringido para que no acepte nulos???

Saludos...:cool:

ecfisa
17-03-2012, 00:40:38
Hola.

Por el tipo de error sospecho que el tema viene por el lado de configuración regional. Vamos a probar agregando estas líneas a tu código a ver si es eso:

var
dsep: Char;
begin
dsep:= DecimalSeparator;
DecimalSeparator:= '.';
//------
CDSDATA.FieldByName('Totaliva').AsFloat:= // campo calculado
CDSDATA.FieldByName('total_art').AsInteger *
CDSDATA.FieldByName('PREC_VTA').asinteger *
CDSDATA.FieldByName('tipo_imp').AsFloat / 100; //Aquí es donde me da el error
CDSDATA.FieldByName('Totalrenglon').AsFloat:= //campo calculado
CDSDATA.FieldByName('PREC_VTA').AsFloat *
CDSDATA.FieldByName('total_art').AsInteger +
CDSDATA.FieldByName('totaliva').AsFloat;
//-----
DecimalSeparator:= dsep;
...
end;

Si así continua el error proba asignando el valor ',' a DecimalSeparator.

Saludos.