Hola,
Cita:
Empezado por Soa Pelaez
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
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.