Delphi - Recuperar campo calculado

 
Vista:
sin imagen de perfil

Recuperar campo calculado

Publicado por Nikolas (15 intervenciones) el 30/05/2008 12:58:13
Hola Gente.

Mi problema es el siguiente:

tengo un query en donde cargo productos con sus nobres, con los campos cantidad, precio unitario y subtotal en 0 y los muestro en un dbgrid.

La idea es que el usuario a medida que cargue los productos seleccionados ingrese la cantidad y el precio_unitario de dicho producto manualmente; y que automaticamente calcule la multiplicacion entre estos en un campo calculado llamado subtot.

Lo que quiero hacer en concreto es que al final de la carga de todos los productos me guarde en una variable la sumatoria de los subtot(campo calculado) de cada producto, o en el caso de que el usuario modifique una cantidad o precio_unitario, para luego guardarlo en una campo de otra tabla (encabezado de venta) como el total de la venta.


El problema es que me actualiza el campo claculado subtot cada vez que toco el campo cantidad o precio_unitario como pretendo, pero cuando hago la sumatoria de los subtotales (mediante un while not query1.eof) y hago la asignacion a la variable total_venta me da el error:

"could not convert typ variant(null) on type float"

como que no puedo recuperar en ina variable el campo calculado.

Ya se que un campo calculado no es un dato que pertenezca a la tabla, pero debe haber alguna forma de guardar en una variabl dicho dato no?.


He probado de distintas maneras de solucionar el problema pero esta a la vista que no he podido.


Desde ya muchas gracias a todos.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Recuperar campo calculado

Publicado por juancho (193 intervenciones) el 30/05/2008 13:20:04
Es solo para darte una idea, haste una funcion:
procedure Total;
var
Total: Double;
begin

while not query.Eof do
begin
Total := query.FieldByName('CANTIDAD').asInteger * query.FieldByName('PRECIO').asFloat;
query.Next;
end;

end;

Eso si lo haces al final de la carga, o lo actualizas en cada cambio del dataset.
O en el BeforePost del dataset, que total sea una propiedad o variable global, y haces lo mismo pero por registro, algo asi
Total := query.FieldByName('CANTIDAD').asInteger * query.FieldByName('PRECIO').asFloat;
Lo vas sumando a tu variable y cuando abres el form ejecutas la funcion que te da los totales, algo asi.
Pero esto tienes que guardarlo en algun lugar pues al cerrar tu form obviamente se va a perder el valor, pero es para darte una idea nada mas. Ojala y te sirva suerte.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

RE:Recuperar campo calculado

Publicado por nikolas (15 intervenciones) el 30/05/2008 14:54:38
Perfecto Juancho. Te entendi. Voy a implementarlo de esa manera a ver si ahora funciona.

Muchas gracias por tu aporte.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar