Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > MySQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 24-01-2009
Avatar de knnibal
knnibal knnibal is offline
Miembro
 
Registrado: nov 2008
Posts: 12
Poder: 0
knnibal Va por buen camino
Problemas con ZEOS

Hola a todos! soy nuevo usando los componentes zeos para delphi7! mi problema es el siguiente! Estoy utilizando un Zconnection, Ztable, Datesource y DBgrid. Bien al momento de correr el programa carga los datos de la base de datos perfetamente en el DBgrid! pero cuando intento insertar un nuevo registro me muestra el siguiente error!:

"Project Histoca_Pro.exe raised exception class EStackOverflow with message 'Stack overflow'. Process stopped. use step or run to continue"

los datos los obtengo de unos edit y al darle a un boton los guardo(pero no lo hace)... el codigo en el boton es el siguiente:

Ztable1.Open;
Ztable1.Insert;
Ztable1.FieldByName('cedula').AsString := Edit1.Text;
Ztable1.FieldByName('nombres').AsString := Edit2.Text;
Ztable1.FieldByName('apellidos').AsString := Edit3.Text;
Ztable1.Post;
__________________
ViVe y Deja Morir!!
Responder Con Cita
  #2  
Antiguo 25-01-2009
Avatar de Al González
[Al González] Al González is offline
In .pas since 1991
 
Registrado: may 2003
Posts: 5.604
Poder: 30
Al González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en bruto
¡Hola!

Una causa muy común de esa excepción es cuando el programa entra en recursión infinita.

Una proceso recursivo es aquel que resulta en la ejecución de una rutina (procedimiento, función, método, evento) antes de haber terminado una ejecución anterior de esa misma rutina. En muchas situaciones es útil emplear procesos recursivos, pero cuando esto sucede de forma no controlada el resultado puede ser el agotamiento de la memoria, por no darse ninguna condición que evite alguna de las llamadas que el código realiza, repitiéndose el ciclo de llamadas indefinidamente.

Cuando se da esta recursión "infinita", el espacio de memoria donde el programa guarda variables y otros datos por cada llamada a alguna rutina llega al punto de "desbordamiento" (stack overflow). Así sucede, por ejemplo, en este caso:

Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
begin
  Button1.Click;
end;

Si tras ocurrir la excepción, presionas en el editor de Delphi la combinación de teclas Ctrl+Alt+S, aparecerá una de las muchas ventanas informativas del depurador, conocida como pila de llamadas (call stack). En ella podrás observar cuál fue el camino que siguió el programa hasta el punto donde ocurrió la excepción y con ello descubrir si estás haciendo mal uso de algún evento u otro elemento del programa, o en sí las rutinas que se están repitiendo una y otra vez y qué origina esa repetición.

Aunque también podría ser otra la causa, como bien lo dice la propia ayuda de Delphi:
Cita:
EStackOverflow is raised when the system is unable to allocate necessary stack space. This can happen because of [1] extremely large local variables, [2] deeply recursive routines, or [3] invalid machine-language code.
Lo primero que suelo hacer ante esa excepción es presionar Ctrl+Alt+S para ver si es debida a la segunda de esas tres causas.

Otra tarea de depuración sería colocar un punto de ruptura (tecla F5) en tu instrucción Open, y desde ese punto ejecutar el programa sentencia por sentencia (tecla F8). Esto para saber cuál de ellas es la rama que deriva en el error que aparece en pantalla.

Espero haber orientado. No dejes de comentarnos las novedades que hayas encontrado.

Al González.
Responder Con Cita
  #3  
Antiguo 26-01-2009
Avatar de AzidRain
[AzidRain] AzidRain is offline
Miembro Premium
 
Registrado: sep 2005
Ubicación: Córdoba, Veracruz, México
Posts: 2.914
Poder: 21
AzidRain Va camino a la fama
Mas bien creo que estás haciendo esa inserción a la BD varias veces, supongo que para algun proceso en particular, ya que no pones más código. Revisa si pusiste un ciclo repeat-until, o while Do que la condición que lo controla realmente se cumpla y/o que no se te haya olvidado mover el control de la condicion, como cuando le dices: "repetir esto hasta que i=5 y resulta que en el ciclo nunca haces i=i+1", por lo tanto i nunca será 5.

Por otro lado, es mejor usar Append que Insert ya que la primera coloca el nuevo registro al final de la tabla mientras que Insert lo hace en el lugar donde se encuentre el cursor en ese momento.

Si pones algo más de código sin duda será de ayuda.
__________________
AKA "El animalito" ||Cordobés a mucha honra||
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
Problemas con la conexion con Zeos Pachangero MySQL 5 24-01-2009 19:04:26
zeos lib problemas instalar vroa74 OOP 0 10-10-2008 22:09:10
problemas con zeos...ayuudaaaa Jheysson13 Conexión con bases de datos 33 25-06-2008 00:02:00
Problemas con Zeos y TDBChart :D pgraciap MySQL 1 21-11-2005 20:38:15
Problemas con Zeos + Interbase pyanqn Conexión con bases de datos 2 02-11-2005 15:40:34


La franja horaria es GMT +2. Ahora son las 19:02:29.


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