На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! информация о разделе
user posted imageДанный раздел не предназначается для обсуждения, здесь собираются только вопросы-ответы по тематике баз данных. Если есть желание обсудить какие-то вопросы, связанные с тематикой баз данных - перейдите в соответствующие разделы "Базы данных: общие вопросы" или "Базы данных: SQL".
Модераторы: Bas, Chow, MIF
  
    > [на редактирование] Получить доступ к системным таблицам , Узнать существует таблица в базе MS Access?
      Q.Как получить информацию из системных таблиц MS Access?
      Q.Как узнать существует таблица (запрос,представление) в базе MS Access?
      Приведем пример с использованием таблицы MSysObject базы MS Access:

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

      ExpandedWrap disabled
        SELECT Count(*) FROM msysobjects
        WHERE msysobjects.Type=5 AND msysobjects.Name = MyView




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

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

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

      ExpandedWrap disabled
        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.
      0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
      0 пользователей:


      Рейтинг@Mail.ru
      [ Script execution time: 0,0449 ]   [ 16 queries used ]   [ Generated: 28.03.24, 19:13 GMT ]