Ir al contenido


Foto

Error Stack Overflow al almacenar un valor 0 (cero) en MySQL


  • Por favor identifícate para responder
9 respuestas en este tema

#1 JoAnCa

JoAnCa

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 775 mensajes
  • LocationPinar del Río, Cuba

Escrito 03 junio 2015 - 02:41

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?

 


  • 0

#2 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.448 mensajes
  • LocationMéxico

Escrito 03 junio 2015 - 04:21

¿Será alguna configuración del componente ZEOS?

 

Alguna propiedad que cambie el cero por nulo "or something like that!!!!!"

 

Saludos


  • 0

#3 JoAnCa

JoAnCa

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 775 mensajes
  • LocationPinar del Río, Cuba

Escrito 04 junio 2015 - 06:22

¿Será alguna configuración del componente ZEOS?

 

Alguna propiedad que cambie el cero por nulo "or something like that!!!!!"

 

Saludos

 

Pense en eso, revise las propiedades del componente y no veo nada que me oriente al respecto

No se donde mas pudiera buscar..... :undecided:


  • 0

#4 JoAnCa

JoAnCa

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 775 mensajes
  • LocationPinar del Río, Cuba

Escrito 04 junio 2015 - 06:45

Ya encontre el origen del problema

 

Es que uso un campo calculado y tenia puesto esto:


php
  1. if Dataset['Plan'] <> 0 then Dataset['Pcto']:=(Dataset['Real'] / Dataset['Plan'])*100
  2. else Dataset['Plan']:=0;

en lugar de esto:


php
  1. if Dataset['Plan'] <> 0 then Dataset['Pcto']:=(Dataset['Real'] / Dataset['Plan'])*100
  2. else Dataset['Pcto']:=0;

Me di cuenta porque el problema comenzo cuando cree ese campo, revisé el codigo del evento y encontre el problema

 

Solucionado


Editado por JoAnCa, 04 junio 2015 - 06:50 .

  • 0

#5 Delphius

Delphius

    Advanced Member

  • Administrador
  • 6.295 mensajes
  • LocationArgentina

Escrito 04 junio 2015 - 07:00

Me alegro que hayas encontrado la solución. (y)

Lo que si te comento es que quizá por prisas te equivocaste al copiar y pegar el código solucionado. Has puesto dos veces el código original.

 

Saludos,


  • 0

#6 JoAnCa

JoAnCa

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 775 mensajes
  • LocationPinar del Río, Cuba

Escrito 04 junio 2015 - 12:21

Me alegro que hayas encontrado la solución. (y)

Lo que si te comento es que quizá por prisas te equivocaste al copiar y pegar el código solucionado. Has puesto dos veces el código original.

 

Saludos,

 

Quizas por las prisas no leiste bien ;)

 

puse:

 

else Dataset['Plan']:=0;

 

 

en lugar de:

 

else Dataset['Pcto']:=0;


  • 1

#7 Azidrain

Azidrain

    Member

  • Miembros
  • PipPip
  • 18 mensajes

Escrito 04 junio 2015 - 12:38

Y porque no usas mehjor un trigger de MySQL y ahí haces tu cambio? también te sirve y es independiente de tu programa,


  • 0

#8 Delphius

Delphius

    Advanced Member

  • Administrador
  • 6.295 mensajes
  • LocationArgentina

Escrito 04 junio 2015 - 01:13

Mil disculpas. ¡Y eso que lo miré varias veces para ver si encontraba la diferencia! :(

 

Hoy estoy bastante off parece. A ver si recupero las horas perdidas que necesito tener mi trabajo terminado en una semana.

 

Saludos,


  • 0

#9 JoAnCa

JoAnCa

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 775 mensajes
  • LocationPinar del Río, Cuba

Escrito 04 junio 2015 - 01:43

Y porque no usas mehjor un trigger de MySQL y ahí haces tu cambio? también te sirve y es independiente de tu programa,

 

Lo tenia hecho en MySQL, en la propia vista (no con trigger), pero no guardaba los cambios, en la aplicacion se veian las modificaciones, pero al cerrarla volvia a los valores anteriores

Es decir, en la aplicacion se mostraban los cambios, pero MySQL ni se enteraba

 

Con trigger nunca he trabajado, no pense que este calculo se puede hacer con trigger


  • 0

#10 cram

cram

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 832 mensajes
  • LocationMisiones, Argentina

Escrito 04 junio 2015 - 06:07

Lo tenia hecho en MySQL, en la propia vista (no con trigger), pero no guardaba los cambios, en la aplicacion se veian las modificaciones, pero al cerrarla volvia a los valores anteriores

Es decir, en la aplicacion se mostraban los cambios, pero MySQL ni se enteraba

 

Con trigger nunca he trabajado, no pense que este calculo se puede hacer con trigger

JoAnCa,

no es el trigger (disparador, gatillo) el que realiza la acción, lo tienes que hacer en un procedimiento, es el trigger, el que ejecuta ese procedimiento cuando se da la situación que quieres controlar (en la que quieres realizar el cálculo).

Stack Overflow, es desbordamiento de pila. Algún bucle que asigna espacios en la pila o procedimientos que crean variables pueden ser llamados en forma recursiva y esto es lo que pudo darte ese error. Supongo que esa condición genera este caso en Zeos.

 

Saludos


  • 0




IP.Board spam blocked by CleanTalk.