PDA

Ver la Versión Completa : Problema con actualizacion de campo calculado


rloayzal
15-08-2008, 21:59:22
hola a todos

tengo un problema con los campos calculados, ojala alguien pudiera ayudarme

resulta que desea calcular totales acumulados de saldos mensuales, para ello estoy usando un campo calculado para mostrar los valores del total acumulado, pero cuando hago clic o me desplazo usando el scrool del dbgrid hasta el primer registro, todos los valores de los campos calculados se actualizan dandome como veran resultados incorrectos


¿Sera posible llegado cierto numero de registros, detener la actualizacion de campos calculados??

Gracias de antemano por cualquier propuesta de solucion a mi problema

felipe88
15-08-2008, 23:00:12
¿No sera que esta en insert la tabla cuando das flecha abajo?...

rloayzal
15-08-2008, 23:23:39
Felipe gracias por auxiliarme ...

En realidad la tabla no esta en modo insert

si no que para obtener el valor de total saldo acumulado voy acumulando en una variable los saldos mensuales y luego los paso al campo calculado, pero cada que me desplazo por el dbgrid desde el 1 registro al ultimo o viceversa, se actualizan todos los campos calculados actualizando al mismo tiempo mi variable y dan datos incorrectos en el campo calculado.

lo que quiero es que de alguna forma pueda yo desplazarme por el dbgrid y no se modifiquen los valores del campo calculado ya cargado pero no veo como

felipe88
15-08-2008, 23:38:46
Felipe gracias por auxiliarme ...

En realidad la tabla no esta en modo insert

si no que para obtener el valor de total saldo acumulado voy acumulando en una variable los saldos mensuales y luego los paso al campo calculado, pero cada que me desplazo por el dbgrid desde el 1 registro al ultimo o viceversa, se actualizan todos los campos calculados actualizando al mismo tiempo mi variable y dan datos incorrectos en el campo calculado.

lo que quiero es que de alguna forma pueda yo desplazarme por el dbgrid y no se modifiquen los valores del campo calculado ya cargado pero no veo como
Y como los acumulas en la variable, porque normalmente un campo calculado no deberia hacer eso; en el momento no tengo como probar ejemplos con tablas pero podria ser que la falla este en acumulado, ¿en que evento lo haces?

rloayzal
15-08-2008, 23:50:19
Lo estoy realizando en el evento on calculate del adoquery que es la fuente de donde llevo datos al dbgrid, de esta manera

saldo:=saldo+self.ADOQSaldosdepsaldomensual.Value;
self.ADOQSaldosdepsaldoacumulado.Value:=saldo;


donde : saldo es la variable donde acumulo los saldos y los paso al campo calculado "saldoacumulado"

asi, cada que recorre un registro la variable me acumula el saldo y lo paso al campo calculado para que lo muestre,

pero cuando me desplazo por el dbgrid repetidas veces sigue actualizando e incrementando los valores, que no deberia suceder, ya que los mismos ya fueron calculados
:confused:

JoysticK
16-08-2008, 09:14:37
En el OnCalculate me imagino que habra mas codigo no ? Postealo e intentare echarte un cable, es que no consigo pillar la idea de que es lo que estas haciendo en el OnCalculate, porque

B = B + A
A = B

Cuando B vale 0 y C vale 0.... eso como se come ? de donde sacas los valores iniciales ?


Me imagino que en cada registro existe un campo de "venta" por ejemplo y tu lo que quieres hacer es tener en cada registro un campo de "ventas hasta la fecha" que sume las ventas anteriores no ?

rloayzal
18-08-2008, 22:07:12
Yoystick

si efectivamente lo que estoy haciendo es eso, un campo saldos que sume las anteriores, el valor inicial se carga de la base de datos cuando se abre el form, el calculo realiza correctamente, el problema es el dbgrid, que cuando se desplaza sigue recalculando los valores del campo calculado, lo que no deberia suceder, ya qe solo quiero que se calcule una sola vez


es problema de funcionalidad del dbgrid??

JoysticK
19-08-2008, 01:30:39
Yoystick

si efectivamente lo que estoy haciendo es eso, un campo saldos que sume las anteriores, el valor inicial se carga de la base de datos cuando se abre el form, el calculo realiza correctamente, el problema es el dbgrid, que cuando se desplaza sigue recalculando los valores del campo calculado, lo que no deberia suceder, ya qe solo quiero que se calcule una sola vez


es problema de funcionalidad del dbgrid??


Pues yo no veo que sea problema de funcionalidad sino de codigo, eso no se hace ¡¡¡


"Select Sum(campo) as total from tabla where id < :id"


No seria mas facil ?

rloayzal
19-08-2008, 14:59:46
les cuento que probe haciendo uso de consultas, y si, da resultado, aunque aun me sigue la duda, de todas maneras, el problema fue resuelto aumentando un componente query para cada registro del campo calculado, no se como no pude pensar en cosa tan simple, creo que a veces sucede,


gracias a todos..

petete2008
18-12-2008, 18:10:36
Yo tengo un dbgrid y una de las columnas quiero que se autocalcule en base a las otras.


No encuentro la forma!! :(