Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   Bucle infinito al intentar abrir un tableset (https://www.clubdelphi.com/foros/showthread.php?t=47437)

Shikanda 28-08-2007 14:38:43

Bucle infinito al intentar abrir un tableset
 
Hola a todos!

Tengo un pequeño problema que no termino de comprender, y esperaba que me pudieseis echar un cable. Tengo dos DBEdit, uno muestra el código de empleado y el otro el nombre, pero cada DBEdit recoge los datos de un tableset diferente. El código del empleado se recoge de un tableset que se llama UsuariosSistema y el nombre de un tableset Empleados que tiene como DataSource el tableset UsuariosSistema. Basicamente he hecho un copy&paste de otros casos iguales que hay dentro del mismo programa pero en este caso, cuando voy a ejecutar, se crea un bucle infinito entre dos lineas

Código Delphi [-]
procedure TDMUsuarios_Sistema.DSQUsuarios_SistemaDataChange(
  Sender: TObject; Field: TField);
begin
        XEmpleados.Close;
        XEmpleados.Open;
end;

hasta que termina por dar un Access Violation de tipo Write of Address.

No sé porqué me pasa esto. Todavía estoy aprendiendo mucho sobre Delphi y Firebird y seguro que es algo absurdo. Agradeceré toda la ayuda recibida :D

duilioisola 28-08-2007 15:11:28

Si haz hecho copy/paste de la tabla verifica que el evento OnDataChange de los dos no apunte al mismo lugar.

Si es así, supongo que ejecutará el Close y el Open de XEmplreados y luego, como se ha abierto empleados volverá a hacer lo mismo ...

Shikanda 29-08-2007 08:25:44

Hola, duilioisola, gracias por responder a mi mensaje.

A ver si he entendido bien lo que me dices, te digo yo lo que veo aquí. La primera tabla (la de usuarios del sistema) no tiene ningun datasource y por tanto ningun metodo onDataChange. La tabla de empleados si tiene a esta tabla usuarios del sistema como datasource (he comprobado que si que estan bien hechas las referencias, a pesar del copy/paste) y, dentro de eso, el metodo onDataChange, que es el que os mostre en el comentario anterior. Los campos de ambas tablas estan bien editados y no se, por mucho que miro no le encuentro la falta. Al ejecutar, cierra XEmpleados y cuando va a abrirlo, vuelve al begin.

Bueno, en cualquier caso muchas gracias por el cable

Shikanda 29-08-2007 09:18:00

Ya lo he solucionado!:D

Se ve que habia llamado al mismo método onDataChange desde las 2 tablas. Por eso se formaba el bucle. Tenias razón! Muchas gracias por la ayuda, todavía me queda mucho que aprender y con sitios como éste el camino se hace más facil ;)

Un saludo a todos


La franja horaria es GMT +2. Ahora son las 22:03:16.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi