[на редактирование] Получить доступ к системным таблицам
    , Узнать существует таблица в базе MS Access?
  ![]()  | 
Наши проекты:
 Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту  | 
|
| ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS | 
| [216.73.216.5] | 
 
 | 
		
  | 
    информация о разделе
  ![]()  | Данный раздел не предназначается для обсуждения, здесь собираются только вопросы-ответы по тематике баз данных. Если есть желание обсудить какие-то вопросы, связанные с тематикой баз данных - перейдите в соответствующие разделы "Базы данных: общие вопросы" или "Базы данных: SQL". | 
    [на редактирование] Получить доступ к системным таблицам
    , Узнать существует таблица в базе MS Access?
  | 
         
         
         
          
           Сообщ.
           #1
          
          , 
          
         
         
        
       | 
    |
| 
         | 
      
          Q.Как получить информацию из системных таблиц MS Access? 
        
      Q.Как узнать существует таблица (запрос,представление) в базе MS Access? Приведем пример с использованием таблицы MSysObject базы MS Access: Подключаясь к базе данных MS Access используя какую-либо технологию (ADO, ODBC, BDE) может потребоваться информация, которая хранится в системной таблице MSysObject вашей базы данных. Например, Вам нужно знать есть ли какая-то таблица (table), запрос (query) или представление (view) в вашей базе. В базе MS Access пишем запрос ![]() ![]() SELECT Count(*) FROM msysobjects WHERE msysobjects.Type=5 AND msysobjects.Name = MyView Если представление MyView существует, то запрос вернет одно поле, в котором будет стоять единица, в противном случае получим поле c нулем. Если, соблюдая синтаксис языка SQL, написать запрос в среде программирования Delphi/BCB, то будет выдаваться сообщение о том, что «Записи не могут быть прочитаны, отсутствует разрешение на чтение данных для 'msysobjects'». Для того, чтобы получить разрешение на чтение данных из среды Delphi/BCB нужно настроить строку подключения (ADO-технология), например, вот так ![]() ![]() 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.  |