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 Buscar Temas de Hoy Marcar Foros Como Leídos

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: 22
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


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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 09:18:03.


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