PDA

Ver la Versión Completa : mostrar las tablas de una bd


PEITO
04-06-2003, 10:22:39
Tengo una base de datos con unas 30 tablas.
¿Como puedo hacer para que en un combobox insertado en un formulario me aparezcan todas las tablas de dicha base de datos?

¿Si ademas tendo insertado un datasource y un dbgrid, como puedo hacer que cambien los datos segun la tabla que haya elegido en el combobox?

Gracias.

Kafu
04-06-2003, 10:29:39
Depende qué tipo de base de datos sea.
Interbase, Oracle, SQL-server y otros motores del estilo tienen tablas de sistema con los objetos de la BD.
Si hablamos de un paradox, access o por el estilo, creo que tendrás que recorrer los directorios y crearte una lista.
En cuanto a modificar el datasource claro que se puede, en el onchange del combo asignas la propiedad dataset a ese mismo datasource (por ejemplo) y le pones la tabla que hayas seleccionado. Un saludo,



F.T.G.

Kafu
04-06-2003, 10:31:16
Si hablamos de un paradox, access o por el estilo, creo que tendrás que recorrer los directorios y crearte una lista.

Olvida esto. Paradox tiene tablas sueltas, pero acces tiene un único mdb. Disculpa la imprecisión.

andres1569
04-06-2003, 12:11:45
Hola:

El siguiente método de un objeto TSession devuelve en una lista todas las tablas de una base de datos, sin importar que tipo de SGBD sea:

GetTableNames(const DatabaseName, Pattern: string; Extensions, SystemTables: Boolean; List: TStrings);

En la ayuda de Delphi viene explicado su funcionamiento y un ejemplo.

Si rellenas un ComboBox con esas tablas, para que el Grid te muestre los datos de cada tabla, puedes enlazar el DBGrid a un DataSource y éste a un TTable cuyo DatabaseName apunte a esa base de datos. En el OnChange del ComboBox puedes escribir algo así:


procedure FMainComboBox1Change (Sender: TObject);
begin
with Table1 do
begin
DisableControls;
try
Close;
with TComboBox(Sender) do TableName := Items[ItemIndex];
Open;
finally
EnableControls;
end;
end;
end;


Un saludo