<?xml version='1.0' encoding="utf-8"?>
      <rss version='2.0'>
      <channel>
      <title>Форум на Исходниках.RU</title>
      <link>https://forum.sources.ru</link>
      <description>Форум на Исходниках.RU</description>
      <generator>Форум на Исходниках.RU</generator>
  	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=98211&amp;view=findpost&amp;p=570596</guid>
        <pubDate>Mon, 10 Jan 2005 08:18:23 +0000</pubDate>
        <title>[на редактирование] Получить доступ к системным таблицам</title>
        <link>https://forum.sources.ru/index.php?showtopic=98211&amp;view=findpost&amp;p=570596</link>
        <description><![CDATA[tomsksmile: Q.Как получить информацию из системных таблиц MS Access?<br>
Q.Как узнать существует таблица (запрос,представление) в базе MS Access? <br>
Приведем пример с использованием таблицы MSysObject базы MS Access: <br>
<br>
Подключаясь к базе данных MS Access используя какую-либо технологию (ADO, ODBC, BDE) может потребоваться информация, которая хранится в системной таблице MSysObject вашей базы данных. Например, Вам нужно знать есть ли какая-то таблица (table), запрос (query) или представление (view) в вашей базе. В базе MS Access пишем запрос <br>
<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">SELECT Count(*) FROM msysobjects</div><div class="code_line">WHERE msysobjects.Type=5 AND msysobjects.Name = MyView</div></ol></div></div></div></div><script>preloadCodeButtons('1');</script><br>
 <br>
<br>
<br>
Если представление MyView существует, то запрос вернет одно поле, в котором будет стоять единица, в противном случае получим поле c нулем.<br>
<br>
Если, соблюдая синтаксис языка SQL, написать запрос в среде программирования Delphi/BCB, то будет выдаваться сообщение о том, что «Записи не могут быть прочитаны, отсутствует разрешение на чтение данных для &#39;msysobjects&#39;».<br>
<br>
Для того, чтобы получить разрешение на чтение данных из среды Delphi/BCB нужно настроить строку подключения (ADO-технология), например, вот так<br>
<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">ConnectionString:=&#39;Provider=Microsoft.Jet.OLEDB.4.0;&#39;+</div><div class="code_line">&#39;Data Source=&#39;+pathDB+&#39;;&#39;+</div><div class="code_line">&#39;Jet OLEDB:Create System Database=true;&#39;+</div><div class="code_line">&#39;Jet OLEDB:System database=&#39;+pathSysDB;</div></ol></div></div></div></div><br>
<br>
В этой строке: <br>
pathDB – путь к вашей базе, <br>
pathSysDB – путь к файлу рабочей группы. <br>
По умолчанию будут использоваться системный файл (system.mdw), который располагается C:&#092;Documents and Settings&#092;user&#092;Application Data&#092;Microsoft&#092;Access. Если на вашем компьютере несколько пользователей, будут возникать проблемы с правами использования данного файла.<br>
Чтобы создать свой файл рабочей группы нужно запустить MS Access-&gt;Сервис-&gt;Защита-&gt;Администратор рабочих групп-&gt;Создать… и в стоке подключения указать путь pathSysDB к созданному системному файлу.<br>
После подключения файла рабочей группы можно обращаться с запросами к системной таблице MSysObject непосредственно из программирования Delphi/BCB.<br>
Приведем значения, которое может принимать Type:<br>
Type Пояснение<br>
1 таблица<br>
6 присоединенная таблица<br>
5 запрос/представление<br>
8 отношения,связи (Relationships) <br>
-32768 форма<br>
-32764 отчет<br>
-32766 макрос<br>
-32761 модуль<br>
<br>
<span class="tag-color tag-color-named" data-value="gray" style="color: gray"><span class='tag-size' data-value='7' style='font-size:7pt;'>Эта тема была разделена из темы &quot;<a class='tag-url' href='http://forum.sources.ru/index.php?showtopic=74766' target='_blank'>Как проверяете существование таблицы?</a>&quot;</span></span><br>
<a class='tag-url' href='http://forum.sources.ru/index.php?showtopic=40991' target='_blank'>Как получить список таблиц в базе Access? ADO.</a>]]></description>
        <author>tomsksmile</author>
        <category>Базы данных FAQ</category>
      </item>
	
      </channel>
      </rss>
	