Ver Mensaje Individual
  #3  
Antiguo 14-11-2017
Avatar de movorack
[movorack] movorack is offline
Miguel A. Valero
 
Registrado: feb 2007
Ubicación: Bogotá - Colombia
Posts: 1.346
Reputación: 20
movorack Va camino a la famamovorack Va camino a la fama
Hola,

Cita:
Empezado por Soa Pelaez Ver Mensaje
Debes validar antes que el edit no esté vacío,
Si bien debes hacer la validación que te dice Soa, esta la puedes hacer usando TryStrToInt

Aunque creo que el error está en una de estas asignaciones:

Cita:
Empezado por The Cid James Ver Mensaje
Código Delphi [-]
procedure Tfcantidad.BCokClick(Sender: TObject);
begin
  //..  
    a := fmodulo.tVentadetalle ['cantidad'];

    fmodulo.tVentadetalle ['id_producto'] := fmodulo.tProductos ['id_producto'];
    fmodulo.tVentadetalle['Precio_v'] := ( a * fmodulo.tProductos ['precio_vent']) ;
  //..
end;
Verás. Ahí estás intentando obtener un valor variant del dataset por mucho que en la tabla este sea una varchar.

Lo que debes hacer es especificar el tipo de dato para ese campo al momento de usarlo.

Ej:

Código Delphi [-]
procedure Tfcantidad.BCokClick(Sender: TObject);
begin
  //..  
    a := fmodulo.tVentadetalle.Fields.FieldByName('cantidad').AsInteger;

    fmodulo.tVentadetalle.Fields.FieldByName('id_producto').AsInteger := fmodulo.tProductos .Fields.FieldByName('id_producto').AsInteger;
    fmodulo.tVentadetalle.Fields.FieldByName('Precio_v').AsFloat := ( a * fmodulo.tProductos .Fields.FieldByName('precio_vent').AsFloat) ;
  //..
end;

Si el campo es nulo, y haces el llamado con un AsString retornará una cadena vacía y si lo llamas con un AsInteger retornará un 0.

Recomendación: Haz este cambio en todo tu sistema. No sabrás cuando a algún usuario se le dé por jugar con los datos y cargar datos nulos donde nunca los esperarías.
__________________
Buena caza y buen remar... http://mivaler.blogspot.com
Responder Con Cita