Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Problema urgente con un datasource (https://www.clubdelphi.com/foros/showthread.php?t=32780)

Yago 16-06-2006 00:40:51

Problema urgente con un datasource
 
Bueno, lo primero de todo pedir disculpas por adelantado si incumplo alguna norma del foro, acabo de registrarme y aún no he tenido tiempo de revisar normativas ni hilos anteriores.

Os cuento mi problema, a ver si alguien puede echarme una mano.

En una aplicación tengo un DBGrid al cual asocio un DataSource u otro según que botón se pulse. Pulsando otro botón ('Nuevo') libero el grid (datasource.free). Entre ambas acciones el programa realiza una consulta SQL.

El Problema: Tras algunos cambios de DataSource la asignación empieza a fallar y el DBGrid se queda en blanco. Siguiendo la ejecución línea a línea he visto que el fallo viene porque al enviar el DataSource a la función que realiza el cambio, el valor enviado se convierte en 'Nil'.

CambiarTabla(DM.DtsTabla1); // Llamada a la función.

CambiarTabla(Datos : TDataSource);
begin
DBGrdTablas.DataSource := Datos; // Asignación.
end;

La verdad es que no se me ocurre porque puede pasar, ya que lo extraño es que a veces funciona y a veces no. ¿Alguna idea?

Héctor Randolph 16-06-2006 01:26:39

Hola Yago, bienvenido al foro.

Cuando haces Datasource.Free, en realidad lo que estás haciendo es destruir la instancia del DataSource, es decir, la estas liberando de la memoria y no podrás referenciarla más adelante, ¿Ese es el comportamiento que esperas?.

De acuerdo con lo que yo entiendo, lo que quieres es asociar diferentes Datasource a un DBGrid, en el caso en que quieras dejar el DBGrid sin asociación a un Datasource utiliza lo siguiente:

Código Delphi [-]
  DBGrdTablas.DataSource:=nil;
 // Usa esto en lugar de DataSource.Free;



Espero haber entendido tu problema.

Saludos

Yago 16-06-2006 01:36:11

Diooos... vaya burro que estoy hecho :(

Has entendido perfectamente lo que quería hacer. Esto me pasa por usar código sin saber bien lo que hace.

Muchísimas gracias por tu ayuda, me salvas el curso ;)


La franja horaria es GMT +2. Ahora son las 01:16:11.

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