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 31-08-2006
chileno chileno is offline
Miembro
 
Registrado: jun 2005
Posts: 121
Poder: 19
chileno Va por buen camino
campos calculado "Stack over Flow"

hola de nuevo!!!

esto se me escapa de mis manos asi que recurro a todos que me hechen una mano, la situcion es la sgte:

Código Delphi [-]
procedure TDM.tbPrecioCalcFields(DataSet: TDataSet);
begin
  if not (DataSet.State = dsInsert) then
  begin
    DataSet.FieldByName('Total_Cargos').Value :=       tbCargos.FieldByName('embalaje').Value +                                                tbCargos.FieldByName('comision').Value +
                                                  tbCargos.FieldByName('otros').Value    +
                                                  ObtenerValor(Dataset.FieldByName('id_tipo_precio').Value);
    DataSet.FieldByName('Precio_Venta').Value := ((tbUnidad_Venta.FieldValues['Costo'] * DataSet.FieldByName('Total_Cargos').Value)/100) +
                                                   tbUnidad_Venta.FieldValues['Costo'];
    DataSet.FieldByName('embalaje').Value     := (tbUnidad_Venta.FieldValues['Costo'] * tbCargos.FieldByName('embalaje').Value)/100;
    DataSet.FieldByName('comision').Value     := (tbUnidad_Venta.FieldValues['Costo'] * tbCargos.FieldByName('comision').Value)/100;
    DataSet.FieldByName('otros').Value        := (tbUnidad_Venta.FieldValues['Costo'] * tbCargos.FieldByName('otros').Value)/100;
    DM.miSQL.Close;
    DM.miSQL.SQL.Clear;
    DM.miSQL.SQL.Add('select transporte from tipo_precio where id_tipo_precio = ' + floattostr(Dataset.FieldByName('id_tipo_precio').Value));
    DM.miSQL.Open;
    DataSet.FieldByName('trasporte').Value   :=  (tbUnidad_Venta.FieldValues['Costo'] * DM.miSQL.Fields[0].Value)/100;
    DM.miSQL.Close;
    DM.miSQL.SQL.Clear;
    DM.miSQL.SQL.Add('select utilidad from tipo_precio where id_tipo_precio = ' + floattostr(Dataset.FieldByName('id_tipo_precio').Value));
    DM.miSQL.Open;
    DataSet.FieldByName('utilidad').Value     := (tbUnidad_Venta.FieldValues['Costo'] * DM.miSQL.Fields[0].Value)/100;
  end;

el problema surge cuando modifico el campo atravez de un campo de busqueda asoaciado a un dbgrid y me lanza el sgte mensaje "Stack over Flow".... cualquier sugerencia es de ayuda !!!
Responder Con Cita
  #2  
Antiguo 31-08-2006
Avatar de Héctor Randolph
[Héctor Randolph] Héctor Randolph is offline
Miembro Premium
 
Registrado: dic 2004
Posts: 882
Poder: 20
Héctor Randolph Va por buen camino
Seguramente el evento tbPrecio.OnCalcFields se está llamando recursivamente y se desborda la pila.

Una posible solución es que dentro del código desactives el evento para que no se dispare nuevamente al modificar la tabla de precios.

Código Delphi [-]
procedure TDM.tbPrecioCalcFields(DataSet: TDataSet);
begin
   tbPrecio.OnCalcFiels:=nil;//desactivas el evento para evitar recursividad
 
   {....tú código ....}

   tbPrecio.OnCalcFields:=tbPrecioCalcFields;//Lo activas nuevamente antes de salir
end;

Saludos
Responder Con Cita
  #3  
Antiguo 31-08-2006
ramiretor ramiretor is offline
Miembro
 
Registrado: may 2003
Ubicación: México
Posts: 196
Poder: 21
ramiretor Va por buen camino
Hola
¿Estás seguro de no hacer una división sobre cero o algo similar?

Saludos
__________________
Ernesto R.
Responder Con Cita
  #4  
Antiguo 31-08-2006
chileno chileno is offline
Miembro
 
Registrado: jun 2005
Posts: 121
Poder: 19
chileno Va por buen camino
hola hector....

donde estas para invitarte una cerveza bien helada......

era justo lo que necesitaba...gracias
Responder Con Cita
  #5  
Antiguo 31-08-2006
Avatar de Héctor Randolph
[Héctor Randolph] Héctor Randolph is offline
Miembro Premium
 
Registrado: dic 2004
Posts: 882
Poder: 20
Héctor Randolph Va por buen camino
Cita:
Empezado por chileno
donde estas para invitarte una cerveza bien helada......
Gracias, tomaré una bien helada a tu salud. Así me la recetó el doctor
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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
¿cuál es mejor: "close" o "application.terminate"? unreal4u Varios 5 05-03-2007 11:01:19
porque no me reconoce los caracteres "*" ni "%" cuando filtro mrmago Conexión con bases de datos 10 27-01-2006 04:21:16
error al insertar campos "index of bounds(0)" carobahamondes MySQL 1 26-04-2005 00:40:24
Campos "boolean" en MySql salvica MySQL 3 01-03-2005 15:02:16
Borrar restriccion "Default" sobre campos vmladino Oracle 2 29-10-2004 17:41:24


La franja horaria es GMT +2. Ahora son las 10:56:08.


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