Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 18-10-2004
ctronx ctronx is offline
Miembro
 
Registrado: jun 2004
Posts: 214
Poder: 20
ctronx Va por buen camino
Unhappy Como puedo obtener el nombre de tabla(s) de una bd access

Saludos, necesito saber Como puedo obtener el nombre de tabla(s) de una bd access, tengo el nombre el archivo de acces "BASE.MDB" pero este archivo cambia cada semana conserva el mismo nombre pero genera nuevas tablas las cuales no se su nombre, enconces necesito saber el nombre la tabla(s) que contenga el archivo "BASE.MDB".
Espero me puedan ayudar, trabajo con delphi 7 y me conecto a acces por medio de controles zeos y ODBC.

Gracias.
Responder Con Cita
  #2  
Antiguo 19-10-2004
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.282
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por ctronx
...Como puedo obtener el nombre de tabla(s) de una bd access, tengo el nombre el archivo de acces "BASE.MDB" pero este archivo cambia cada semana conserva el mismo nombre pero genera nuevas tablas las cuales no se su nombre, enconces necesito saber el nombre la tabla(s) que contenga el archivo "BASE.MDB".
En access se pueden visualizar las Tablas ocultas y de sistema (busca en las opciones de configuración); Entre las tablas de sistema existe una llamada MSysObjects que contiene todos los objetos existentes en la BAse de DAtos, Tablas, consultas, Listados, Macros,... (a cada uno le corresponde un tipo); Haz una consulta sobre esa tabla con el Tipo de la tablas (creo recordar que es el 1); Sería algo así:

Código SQL [-]
select * from MSysObjects where Type=1
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #3  
Antiguo 19-10-2004
ctronx ctronx is offline
Miembro
 
Registrado: jun 2004
Posts: 214
Poder: 20
ctronx Va por buen camino
Thumbs up

Intente lo que sugieres pero me marca un error dice que no tengo persimo de READ sobre MSysObjects, sigo intentando, lo unico que quiero es tener un combox con las tablas que contenga mi archivo.MDB de mi conexion.
Responder Con Cita
  #4  
Antiguo 28-10-2004
ctronx ctronx is offline
Miembro
 
Registrado: jun 2004
Posts: 214
Poder: 20
ctronx Va por buen camino
Unhappy

Saludos, sigo te niendo el mismo problema no se como resolverlo espero alguien me pueda ayudar, necesito saber Como puedo obtener el nombre de tabla(s) de una bd access, tengo el nombre el archivo de acces "BASE.MDB" pero este archivo cambia cada semana conserva el mismo nombre pero genera nuevas tablas las cuales no se su nombre, enconces necesito saber el nombre la tabla(s) que contenga el archivo "BASE.MDB".

Espero me puedan ayudar, trabajo con delphi 7 y me conecto a acces por medio de controles zeos y ODBC.

Gracias por la ayuda que puedan darme.
Responder Con Cita
  #5  
Antiguo 28-10-2004
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.282
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Otra opción:

¿Tienes posibilidad de conectarte vía ADO? Lo digo por que el componente ADOConnection posee un método llamado GetTableNames que te devuelve una listya con todas las tablas de la Base de Datos (añade además un parámetro que te permite definir si se incluyen las de sistema o no).
Si no tienes posibilidad revisa si en los componentes ZEOS (que comentas que utilizas) existe algun método similar.
En realidad no hace falta que conectes vía ADO, sólo que coloques el componente ADOConnection y configures la conexión correctamente.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #6  
Antiguo 28-10-2004
ctronx ctronx is offline
Miembro
 
Registrado: jun 2004
Posts: 214
Poder: 20
ctronx Va por buen camino
Thumbs up

El componente zeos que utilizo no trae el metodo GetTableNames, lo probe con ADOConnection como me aconsejaste y ahi si funciona bien, voy a utilizar ADOConection para esta parte de mi programa.


Muchas gracias.
Responder Con Cita
  #7  
Antiguo 05-11-2004
Juan Ignacio Juan Ignacio is offline
Registrado
 
Registrado: nov 2004
Posts: 8
Poder: 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
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


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


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