Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   columna calculada (https://www.clubdelphi.com/foros/showthread.php?t=78056)

gianfranco_tont 15-03-2012 22:51:32

columna calculada
 
tengo dos columnas autocalculada en un dbgrid pero tengo un problema con la sentencia de calculos:
Código Delphi [-]
  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

null
 
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:
Código Delphi [-]
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.


La franja horaria es GMT +2. Ahora son las 10:28:11.

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