Ver Mensaje Individual
  #7  
Antiguo 05-11-2004
Juan Ignacio Juan Ignacio is offline
Registrado
 
Registrado: nov 2004
Posts: 8
Reputación: 0
Juan Ignacio Va por buen camino
Listando Las Tablas Y Consultas En Una Base De Datos

Yo encontre la respuesta aquí: (lo he copiado abajo)
http://www.latiumsoftware.com/es/pascal/0013.php

5. LISTANDO LAS TABLAS Y CONSULTAS EN UNA BASE DE DATOS


Si necesita conocer los nombres de todas las tablas y/o consultas
(vistas) en una base de datos abierta con la BDE, puede usar
DbiOpenTableList para crear un cursor* con todos los nombres de tablas y
consultas, y luego puede leerlo llamando a DbiGetNextRecord como se
muestra en el ejemplo de abajo que guarda los nombres en un cuadro de
lista (ListBox), indicando si corresponden a una tabla o a una
consulta.

(*) Un cursor, para quienes no están al día en la terminología de
las bases de datos, es una "tabla lógica". Por ejemplo cuando
abrimos una tabla o consulta, lo que obtenemos es un cursor, es
decir, un conjunto de datos distribuidos en filas o en columnas,
independientemente que esos datos provengan de una tabla física,
de parte de una tabla, de muchas tablas o de cualquier otra fuente
de datos.

Para probar el ejemplo, simplemente coloque un ListBox y un Button
(botón) en un formulario, y genere el manejador del evento OnClick del
botón:

uses db, dbtables, bde; // No se olvide de incluir la unidad BDE!

procedure TForm1.Button1Click(Sender: TObject);
var
db1: TDatabase;
hCursor: hDBICur; // Cursor con los nombres de tablas y
// consultas
ListDesc: TBLBaseDesc; // Registro del cursor
begin
ListBox1.Clear;
db1 := nil;
try
db1 := TDatabase.Create(nil);
// Establezca las propiedades necesarias para abrir su base de
// datos
db1.DatabaseName := 'Access_ODBC_Test';
db1.LoginPrompt := False;

db1.Connected := True;

// Generar el cursor con los nombres de tablas y consultas
Check(DbiOpenTableList(db1.Handle, False, False, '*', hCursor));

// Moverse por los registros del cursor para obtener los nombres
while (DbiGetNextRecord(hCursor, dbiNOLOCK, @ListDesc, nil)
= dbiErr_None) do
if ListDesc.bView then // ¿Es una consulta?
ListBox1.Items.Add(ListDesc.szName + ' (Consulta)')
else
ListBox1.Items.Add(ListDesc.szName + ' (Tabla)');

// Cerrar el cursor
dbiCloseCursor(hCursor);

db1.Connected := False;
except
db1.Free;
raise;
end;
db1.Free;
end;

En lugar de una variable de tipo TDatabase creada para el propósito,
puede usar un control TDatabase colocado en un formulario, o la
propiedad Database de un control TTable o TQuery.

Última edición por Juan Ignacio fecha: 11-10-2006 a las 22:37:18.
Responder Con Cita