Версия для печати
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум на Исходниках.RU > Базы данных, репортинг, печать > Как получить список таблиц в базе Access?


Автор: Vit 18.12.03, 14:37
t:Tstringlist;
...
ADOConnection.GetTableNames(t)

Автор: s-mike 07.06.05, 10:32
Q.Как получить информацию из системных таблиц MS Access?
Q.Как узнать существует таблица (запрос,представление) в базе MS Access?
Приведем пример с использованием таблицы MSysObject базы MS Access:

Подключаясь к базе данных MS Access используя какую-либо технологию (ADO, ODBC, BDE) может потребоваться информация, которая хранится в системной таблице MSysObject вашей базы данных. Например, Вам нужно знать есть ли какая-то таблица (table), запрос (query) или представление (view) в вашей базе. В базе MS Access пишем запрос

<{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}>
    SELECT Count(*) FROM msysobjects
    WHERE msysobjects.Type=5 AND msysobjects.Name = MyView




Если представление MyView существует, то запрос вернет одно поле, в котором будет стоять единица, в противном случае получим поле c нулем.

Если, соблюдая синтаксис языка SQL, написать запрос в среде программирования Delphi/BCB, то будет выдаваться сообщение о том, что «Записи не могут быть прочитаны, отсутствует разрешение на чтение данных для 'msysobjects'».

Для того, чтобы получить разрешение на чтение данных из среды Delphi/BCB нужно настроить строку подключения (ADO-технология), например, вот так

<{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}>
    ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;'+
    'Data Source='+pathDB+';'+
    'Jet OLEDB:Create System Database=true;'+
    'Jet OLEDB:System database='+pathSysDB;


В этой строке:
pathDB – путь к вашей базе,
pathSysDB – путь к файлу рабочей группы.
По умолчанию будут использоваться системный файл (system.mdw), который располагается C:\Documents and Settings\user\Application Data\Microsoft\Access. Если на вашем компьютере несколько пользователей, будут возникать проблемы с правами использования данного файла.
Чтобы создать свой файл рабочей группы нужно запустить MS Access->Сервис->Защита->Администратор рабочих групп->Создать… и в стоке подключения указать путь pathSysDB к созданному системному файлу.
После подключения файла рабочей группы можно обращаться с запросами к системной таблице MSysObject непосредственно из программирования Delphi/BCB.
Приведем значения, которое может принимать Type:
Type Пояснение
1 таблица
6 присоединенная таблица
5 запрос/представление
8 отношения,связи (Relationships)
-32768 форма
-32764 отчет
-32766 макрос
-32761 модуль

Эта тема была разделена из темы "Как проверяете существование таблицы?"
Как получить список таблиц в базе Access? ADO.

Автор: tomsksmile

Powered by Invision Power Board (https://www.invisionboard.com)
© Invision Power Services (https://www.invisionpower.com)