Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 03-06-2015
Avatar de JoAnCa
JoAnCa JoAnCa is offline
Miembro
 
Registrado: jul 2005
Ubicación: Cuba
Posts: 435
Poder: 19
JoAnCa Va por buen camino
Question Error Stack Overflow al almacenar un valor 0 (cero) en MySQL

Hola a todos
Me ha sucedido algo raro que no entiendo porque es

Estoy programando en Delphi7 y conectado a MySQL con Zeos, y mediante un boton actualizo los datos en una consulta actualizable
Para actualizar los datos, segun el numero de fila, hace un calculo y alamacena el resultado, que cuando es diferente de 0, se almacena sin problemas, pero si es 0 me salta el error "Error Stack Overflow ....."

Para descartar posible error en la formula, le asigno directamente cero y tambien salta el error
Sin embargo en MySQL (usando Navicat) le escribo 0 y lo acepta como es de esperar

Alguna idea de por que sucederá esto?
__________________
La hora de acción no es hora de aprender, es necesario haber aprendido antes
Responder Con Cita
  #2  
Antiguo 03-06-2015
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.038
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Podemos especular y tratar de adivinar, será mejor que pongas tu código y des más datos.
Responder Con Cita
  #3  
Antiguo 03-06-2015
Avatar de JoAnCa
JoAnCa JoAnCa is offline
Miembro
 
Registrado: jul 2005
Ubicación: Cuba
Posts: 435
Poder: 19
JoAnCa Va por buen camino
Este es el segmento de codigo del boton calcular

Código Delphi [-]
  with ModBD_Global, ModBD_Global.ztIndicadEfic do
  begin
    First;      //--- Calcular el Plan ---
    while not Eof do
    begin
      Edit;
      case ztIndicadEficFila.Value of
        2:IngPlan:=ztIndicadEficPlan.Value;   //--- Total Ingresos  ---
        3:VNPlan:=ztIndicadEficPlan.Value;    //--- Ventas Netas  ---
        4:GastPlan:=ztIndicadEficPlan.Value;  //--- Total Gastos  ---
        5:if VarIsNull(ztIndicadEficPlan.Value) then SalPlan:=0
          else SalPlan:=ztIndicadEficPlan.Value; //--- Salario ---
        6:CMPlan:=ztIndicadEficPlan.Value;    //--- Costo de Mercancias ---
        7:GMPlan:=ztIndicadEficPlan.Value;    //--- Gasto Material ---
        8:SCPlan:=ztIndicadEficPlan.Value;    //--- Servicios Comprados ---
        9:begin                               //--- VAB ---
            VAPlan:=VNPlan-(GMPlan + CMPlan + SCPlan);
            if VarIsNull(VAPlan) then VAPlan:=0;
            ztIndicadEficPlan.Value:=0.00;//VAPlan;      <--- Aqui da el error de stack overflow
          end;
       10:if (VAPlan = 0) or (VarIsNull(VAPlan)) then ztIndicadEficPlan.Value:=0      <-- y Aqui tambien si el anterior es <> de cero
          else ztIndicadEficPlan.Value:=SalPlan/VAPlan;         //--- IngMon / VAB ---
       17:ztIndicadEficPlan.Value:=(SalPlan*12.5)/100;    //--- 12.5% Seg. Soc. ---
       18:ztIndicadEficPlan.Value:=(SalPlan*12)/100;      //--- 12% Imp. Fza Trab ---
       19:ztIndicadEficPlan.Value:=SalPlan/100;           //--- 1% Imp. Territorial ---
       20:ztIndicadEficPlan.Value:=SalPlan*0.0295;        //--- Financmto OSDE ---
       23:begin                                           //--- Promedio Trabajadores  ---
           PromTrab:=ztIndicadEficPlan.Value;
           if VarIsNull(PromTrab) then PromTrab:=0;
          end;
       26:if PromTrab = 0 then ztIndicadEficPlan.Value:=0
          else ztIndicadEficPlan.Value:=VAPlan/PromTrab;  //--- Productividad ---
       27:if PromTrab = 0 then ztIndicadEficPlan.Value:=0
          else ztIndicadEficPlan.Value:=SalPlan/PromTrab; //--- Salario Medio ---
       28:if VAPlan = 0 then ztIndicadEficPlan.Value:=0
          else ztIndicadEficPlan.Value:=SalPlan/VAPlan;   //--- Salario / VAB ---
      end;
      Post;
      Next;
    end;

  end;

Pero ya les digo, si todos los valores son diferentes de cero, funciona bien
__________________
La hora de acción no es hora de aprender, es necesario haber aprendido antes
Responder Con Cita
  #4  
Antiguo 04-06-2015
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.038
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
¿Lo has seguido paso a paso para ver qué valor tiene en ese punto?
Responder Con Cita
  #5  
Antiguo 04-06-2015
Avatar de JoAnCa
JoAnCa JoAnCa is offline
Miembro
 
Registrado: jul 2005
Ubicación: Cuba
Posts: 435
Poder: 19
JoAnCa Va por buen camino
Pues si, lo he seguido
Y cuando es 0 salta el error, si es diferente sigue el curso normal y no da error

La verdad me tiene bastante intrigado este problemita
__________________
La hora de acción no es hora de aprender, es necesario haber aprendido antes
Responder Con Cita
  #6  
Antiguo 04-06-2015
Avatar de JoAnCa
JoAnCa JoAnCa is offline
Miembro
 
Registrado: jul 2005
Ubicación: Cuba
Posts: 435
Poder: 19
JoAnCa Va por buen camino
Thumbs up Solucionado

Ya encontre el origen del problema
Es que uso un campo calculado y tenia puesto esto

Código Delphi [-]
  if Dataset['Plan'] <> 0 then Dataset['Pcto']:=(Dataset['Real'] / Dataset['Plan'])*100
  else Dataset['Plan']:=0;

en lugar de esto

Código Delphi [-]
  if Dataset['Plan'] <> 0 then Dataset['Pcto']:=(Dataset['Real'] / Dataset['Plan'])*100
  else Dataset['Pcto']:=0;

Me di cuenta porque el problema comenzo cuando cree ese campo, revisé el codigo del evento y encontre el problema
__________________
La hora de acción no es hora de aprender, es necesario haber aprendido antes
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
Stack Overflow Guillermo80 Varios 10 01-06-2008 21:41:36
stack overflow juan francisco Varios 6 28-05-2008 22:26:15
Stack overflow aonarres API de Windows 5 29-02-2008 13:07:11
Stack Overflow agonzalez Varios 5 08-12-2006 22:26:46
Stack Overflow Mariana Varios 14 30-10-2003 11:37:47


La franja horaria es GMT +2. Ahora son las 00:17:23.


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