Hola
Cita:
Posteado originalmente por andres1569
Bueno, ese problema que comentas lo tendremos siempre que lancemos la consulta SELECT SUM(), independientemente que usemos BeforePost o AfterPost o de que incluyamos en la consulta el registro "actual" (el que estábamos insertando).
|
¿ Porqué ?. En el evento AfterPost, el resultado de la consulta SELECT SUM siempre será correcto, puesto que la Base de Datos contiene todos los registros con sus ultimos valores.
Cita:
Posteado originalmente por andres1569
SELECT SUM(TOTAL)
FROM INGRESOS
WHERE id_ingreso < :id
|
¿ Que ocurre si en lugar de insertar / modificar el ultimo registro, estamos modificando uno de los intermedios en la grid ?. Entonces sería mejor hacer algo como :
SELECT SUM(TOTAL)
FROM INGRESOS
WHERE id_ingreso <> :id
Pero realmente no es necesario, si ejecuta la consulta en el AfterPost el valor devuelto tiene que ser correcto.
Otra cosa es que después diga que le salta un error de :
Tabla Lineas_PEdido no esta en modo edición o inserción. Esto es un error de diseño de las tablas, por poner el total en el DataSet detalles en lugar de en el DataSet maestro.
Lo mejor que puede hacer es poner el total donde corresponde, en la cabecera del pedido, y no complicarse la vida volviendo a poner en modo edición el registro en Detalles, o hacer una consulta parametrizada en el BeforePost, sin tener en cuenta el registro actual para después sumarle el valor de este registro.
Saludos.