FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
StackOverFlow pero no lo entiendo.
Hola!:
Mi problema es el siguiente: Tengo una tabla llamada producción: - NIF_Empleado -Cod_Encargo -Fecha estos tres eran clave -Cantidad -Precio -Importe Con los campos que ahí véis. Resulta que en onChange de Cantidad puse el siguiente código: with DtMod_Calculados.Cons_Ejecuciones do begin SQL.Clear; SQL.Add('Update Produccion set Importe = Cantidad*Precio where NIF_Empleado = :Empleado and Cod_Encargo = :Encargo and Fecha = :Fecha'); ParamByName('Empleado').AsString:= DtMod_Adail.Tb_ProduccionNIF_Empleado.Value; ParamByName('Encargo').AsString:= DtMod_Adail.Tb_ProduccionCod_Encargo.Value; ParamByName('Fecha').AsDateTime:= DtMod_Adail.Tb_ProduccionFecha.Value; DtMod_Adail.Tb_Produccion.CachedUpdates:= true; DtMod_Adail.Tb_Produccion.active := true; ExecSQL; DtMod_Adail.Tb_Produccion.CachedUpdates:= false; DtMod_Adail.Tb_Produccion.active := true; end; Si no pongo lo de CachedUpdates no me guarda los cambios, no sé por qué razón, y si lo pongo, al insertar una producción no pasa nada (aunk a veces no me la inserta bien) pero al modificar cantidad, me pone stackoverflow y lo k hace es volver a llamarse, como si el campo cantidad volviera a cambiar de valor... alguien sabe por qué hace esto? Como puedo arreglarlo¿? Muchas gracias por adelantado y hasta pronto.
__________________
Letty http://usuarios.lycos.es/buffangel |
#2
|
||||
|
||||
Lo que tienes es una llamada recursiva, por lo tanto comienza a llamarse a si misma hasta desborda la pila, por un mal planteamiento.
Lo que debes de hacer calculado es el Importe que sería igua a Cantidad por precio, por lo tanto en el OnChange de Cantidad y precio habría que llamar a un procedimiento o función que devolviera dicho resultado, por lo tanto un cambio en cualquiera de los dos campos motivaría un recalculo del importe, claro que si utilizas SQL, podrías evitar programar el evento OnChange y calcularlo en la propia sentencia SQL. Un Saludo.
__________________
Guía de Estilo de los Foros Cita:
|
#3
|
|||
|
|||
Muchas gracias por contestar, pero es que Importe me hace falta tenerlo y no como campo calculado por otras razones y cuando hago esto mismo en otra tabla me funciona perfectamente.
"Lo que debes de hacer calculado es el Importe que sería igua a Cantidad por precio, por lo tanto en el OnChange de Cantidad y precio habría que llamar a un procedimiento o función que devolviera dicho resultado, por lo tanto un cambio en cualquiera de los dos campos motivaría un recalculo del importe, claro que si utilizas SQL, podrías evitar programar el evento OnChange y calcularlo en la propia sentencia SQL." K haría realmente esa función¿? en sql... como podría hacer k cambiara el importe sin ser asi? ¿alguien podría plantearme otra solución?, ¿cual es el motivo de que haya recursividad? ¿hay otra forma de k me guarde los cambios sin el cached updates? Muchas gracias.
__________________
Letty http://usuarios.lycos.es/buffangel |
|
|
|