Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 27-11-2003
Letty Letty is offline
Miembro
 
Registrado: nov 2003
Ubicación: Galicia
Posts: 36
Poder: 0
Letty Va por buen camino
Unhappy 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
Responder Con Cita
  #2  
Antiguo 27-11-2003
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
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:
- Ça c'est la caisse. Le mouton que tu veux est dedans.
Responder Con Cita
  #3  
Antiguo 27-11-2003
Letty Letty is offline
Miembro
 
Registrado: nov 2003
Ubicación: Galicia
Posts: 36
Poder: 0
Letty Va por buen camino
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
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 00:51:34.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi