На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! информация о разделе
user posted imageДанный раздел предназначается исключительно для обсуждения вопросов использования языка запросов SQL. Обсуждение общих вопросов, связанных с тематикой баз данных - обсуждаем в разделе "Базы данных: общие вопросы". Убедительная просьба - соблюдать "Правила форума" и не пренебрегать "Правильным оформлением своих тем". Прежде, чем создавать тему, имеет смысл заглянуть в раздел "Базы данных: FAQ", возможно там уже есть ответ.

Модераторы: Akina
Страницы: (2) 1 [2]  все  ( Перейти к последнему сообщению )  
> Как проверяете существование таблицы? , ADO/Delphi/Access
    Цитата
    Создать mdw для текущей базы и использовать ее.

    Bas, как ее создавать понятно (свойство установить в true), но вот не могу понять где она создается.
    и что потом придется каждый раз создавать системную таблицу после того как я из архива извлеку основную базу данных?

    системная таблица привязана к определенной базе данных. поэтому нужно при распаковке базы из архива делать заново и системный файл.
      Как используя ADO можно получить информацию из системной таблицы базы MS Access

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

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


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

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

      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 – путь к файлу рабочей группы.
      Предварительно можно создать свой файл рабочей группы (можно использовать и системный файл, который располагается по умолчанию C:\Documents and Settings\user\Application Data\Microsoft\Access). Чтобы создать файл рабочей группы нужно запустить MS Access->Сервис->Защита->Администратор рабочих групп->Создать…
      После подключения файла рабочей группы можно обращаться с запросами к системной таблице MSysObject непосредственно из среды Delphi.

      -------
      Уважаемые господа
      Представляю на обсуждение решение поднятой мною проблемы.

      Уважаемые модераторы
      Достойно ли предложенное описание решения проблемы ФАКа?
        Через DNS
        ExpandedWrap disabled
          [ODBC]
          DRIVER=Microsoft Access Driver (*.mdb)
          UID=admin
          UserCommitSync=Yes
          Threads=3
          SystemDB=C:\Program Files\Common Files\SYSTEM\SYSTEM.MDW
          SafeTransactions=0
          ReadOnly=1
          PageTimeout=5
          MaxScanRows=8
          MaxBufferSize=2048
          FIL=MS Access
          Exclusive=0
          DriverId=25
          DefaultDir=D:\temp\Dom\S
          DBQ=D:\temp\Dom\S\db1.mdb

        В вступлении опиши ошибку и почему она возникает
        Цитата tomsksmile, 5.12.04, 18:11, 533506
        Чтобы создать файл рабочей группы
        При этом не забудьте раздать права.
        Добавь рассшифровку значения Type, а также этот тип подключения являеться общим для Delphi,C++ Builder,VB - для всех кто использует ADO,ODBC - BDE не исключение.
          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 модуль
          Сообщение отредактировано: Bas -
            имеет ли значение на какой операционке сделана системная таблица?
            таблицу делал с помощью аксесс2002 на winXP (апгрейn с home до pro), при запуске программы на win2000 я не вижу, что системная таблица работает.
              Цитата tomsksmile,8.01.05, 08:06 @
              имеет ли значение на какой операционке сделана системная таблица?

              На какой OC - значение не имеет. А значение имеет версия Access'а принцып такой "старшие" - понимают "младших" и пытаються "подтянуть" до себя, "младшие" не понимают "старших".

              Сообщения были разделены в тему "Получить доступ к системным таблицам"
              1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
              0 пользователей:


              Рейтинг@Mail.ru
              [ Script execution time: 0,0315 ]   [ 14 queries used ]   [ Generated: 21.05.24, 10:07 GMT ]