Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Описание системных таблиц MS Access






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

MS Access имеет семь ситемных таблиц: MSysACEs, MSysCmdbars, MSysModules, MSysModules2, MSysObjects, MSysQueries и MSysRelationships.

Таблица MSysObjects.

На мой взгляд - самая " важная" таблица. Содержит информацию об объектах базы данных.

Эта таблица имеет следующие поля:

Имя поля Тип поля
Connect Поле МЕМО
Database Поле МЕМО
DateCreate Дата/время
DateUpdate Дата/время
Flags Числовой
ForeignName Текстовый (255)
Id Числовой (Long Int)
Lv Поле объекта OLE
LvExtra Поле объекта OLE
LvModule Поле объекта OLE
LvProp Поле объекта OLE
Name Текстовый (255)
Owner Двоичный (255)
ParentId Числовой (Long Int) Prim.key
RmtInfoLong Поле объекта OLE
RmtInfoShort Двоичный (255)
Type Числовой (Integer)

Id - ключевое поле. Содержит уникальный идентификатор для каждого объекта БД.

ParentId - значение Id " родительского" объекта. Например если объект " Forms " имеет Id = -2147483648, то все формы будут иметь " -2147483648" в поле ParentId. Стоит заметить, что у всех запросов и таблиц БД один и тот же " родитель" - " Tables ".

 

Type - тип объекта БД. Вот значения этого поля для некоторых типов объектов:

Тип объекта БД Значение поля Type
" Родные" таблицы (в том числе и системные)  
Глобальные " семейства" объектов (Relationships, Databases, Tables, Modules, SysRel, Scripts, Forms, Reports)  
Запросы (в том числе и те, которые на самом деле являются SQL-выражениями в источниках данных форм, отчетов, элементов управления и т.д.)  
Прилинкованные таблицы  
Формы -32768
Отчеты -32764
Макросы -32766
Модули (в том числе модули классов) -32761


Name - имя объекта. Для запросов, которые на самом деле являются SQL-выражениями источников записей это имя стоится по определенным правилам:

  • Источник записей формы (префикс ~sql_f): ~sql_f ИмяФромы
    Для источника записей формы с именем Form1 это имя будет ~sql_fForm1
  • Источник записей отчета (префикс ~sql_r): ~sql_r ИмяОтчета
    Для источника записей отчета с именем Report1 это имя будет ~sql_rReport1
  • Источник строк элемента управления (например списка) формы (префикс ~sql_c): ~sql_c ИмяФормы ~sql_c ИмяЭлементаУправления
    Для элемента управления с именем MyListBox1 в форме с именем Form1 это имя будет ~sql_cForm1~sql_cMyListBox1
  • Источник строк элемента управления (например списка) отчета (префикс ~sql_d): ~sql_d ИмяОтчета ~sql_d ИмяЭлементаУправления
    Для элемента управления с именем MyListBox1 в отчета с именем Report1 это имя будет ~sql_dReport1~sql_dMyListBox1

ForeignName - для прилинкованных таблиц в этом поле содержиться " реальное" имя таблицы. Например если талица с имем Table1 прилинкована с именем MyTable1, то в поле Name будет MyTable1, а в поле ForeignName - Table1. А для прилинкованного документа Excel в этом поле будет имя листа - например Лист1$.

Database - для прилинкованных таблиц в этом поле содержиться полный путь и имя файла, откуда была прилинкована таблица. Для прилинкованных Access-ных таблиц это будет, например, D: \DBases\MyBase.mdb, а для Excel-еских - C: \MyDocuments\Raspisanie.xls.

Connect - для прилинкованныз НЕ-Access-ных таблиц в этом поле содержиться значение свойства Connect. Например для Excel это будет Excel 5.0; HDR=NO; IMEX=2;

DateCreate - дата и время создания объекта.

DateUpdate - дата и время обновления объекта.

Для чего нужны остальные поля этой таблицы - не знаю.

А теперь посмотрим, какие данные мы можем получить из этой таблицы:

Что можем получить SQL
Список " родных" таблиц SELECT MSysObjects.Id, MSysObjects.Name FROM MSysObjects WHERE (((MSysObjects.Type)=1) AND ((Left([Name], 4))< > " MSys" And (Left([Name], 4))< > " USys"));
Список присоединенных таблиц SELECT MSysObjects.Id, MSysObjects.Name FROM MSysObjects WHERE (((MSysObjects.Type)=6) AND ((Left([Name], 4))< > " MSys" And (Left([Name], 4))< > " USys"));
Список " родных" и присоединенных таблиц SELECT MSysObjects.Id, MSysObjects.Name, MSysObjects.Type FROM MSysObjects WHERE (((MSysObjects.Type)=1 Or (MSysObjects.Type)=6) AND ((Left([Name], 4))< > " MSys" And (Left([Name], 4))< > " USys"));
Список запросов SELECT MSysObjects.Id, MSysObjects.Name FROM MSysObjects WHERE (((Left([Name], 4))< > " ~sq_") AND ((MSysObjects.Type)=5));
Список форм SELECT MSysObjects.Id, MSysObjects.Name FROM MSysObjects WHERE (((MSysObjects.Type)=-32768));
Список отчетов SELECT MSysObjects.Id, MSysObjects.Name FROM MSysObjects WHERE (((MSysObjects.Type)=-32764));
Список макросов SELECT MSysObjects.Id, MSysObjects.Name FROM MSysObjects WHERE (((MSysObjects.Type)=-32766));
Список модулей SELECT MSysObjects.Id, MSysObjects.Name FROM MSysObjects WHERE (((MSysObjects.Type)=-32761));
Список форм, имеюших выражение SQL в источнике SELECT MSysObjects_1.Id AS [Id Форм], Right([MSysObjects]! [Name], Len([MSysObjects]! [Name])-5) AS [Имя формы], MSysObjects.Id AS [Id Запроса] FROM MSysObjects, MSysObjects AS MSysObjects_1 WHERE (((Right([MSysObjects]! [Name], Len([MSysObjects]! [Name])-5))= [MSysObjects_1]! [Name]) AND ((Left([MSysObjects]! [Name], 5))=" ~sq_f") AND ((MSysObjects.Type)=5) AND ((MSysObjects_1.Type)=-32768));
Список отчетов, имеюших выражение SQL в источнике SELECT MSysObjects_1.Id AS [Id Отчета], Right([MSysObjects]! [Name], Len([MSysObjects]! [Name])-5) AS [Имя отчета], MSysObjects.Id AS [Id Запроса] FROM MSysObjects, MSysObjects AS MSysObjects_1 WHERE (((Right([MSysObjects]! [Name], Len([MSysObjects]! [Name])-5))=[MSysObjects_1]! [Name]) AND ((Left([MSysObjects]! [Name], 5))=" ~sq_r") AND ((MSysObjects.Type)=5) AND ((MSysObjects_1.Type)=-32764));
Список элементов управления форм, имеюших выражение SQL в источнике SELECT MSysObjects_1.Id, Mid([MSysObjects]! [Name], 6, InStr(2, [MSysObjects]! [Name], " ~sq_c")-6) AS [Имя формы], Mid([MSysObjects]! [Name], InStr(2, [MSysObjects]! [Name], " ~sq_c")+5) AS [Имя элемента] FROM MSysObjects AS MSysObjects_1, MSysObjects WHERE (((Mid([MSysObjects]! [Name], 6, InStr(2, [MSysObjects]! [Name], " ~sq_c")-6))=[MSysObjects_1]! [Name]) AND ((Left([MSysObjects]! [Name], 5))=" ~sq_c") AND ((MSysObjects.Type)=5) AND ((MSysObjects_1.Type)=-32768));
Список элементов управления отчетов, имеюших выражение SQL в источнике SELECT MSysObjects_1.Id, Mid([MSysObjects]! [Name], 6, InStr(2, [MSysObjects]! [Name], " ~sq_d")-6) AS [Имя отчета], Mid([MSysObjects]! [Name], InStr(2, [MSysObjects]! [Name], " ~sq_d")+5) AS [Имя элемента] FROM MSysObjects, MSysObjects AS MSysObjects_1 WHERE (((Mid([MSysObjects]! [Name], 6, InStr(2, [MSysObjects]! [Name], " ~sq_d")-6))=[MSysObjects_1]! [Name]) AND ((Left([MSysObjects]! [Name], 5))=" ~sq_d") AND ((MSysObjects.Type)=5) AND ((MSysObjects_1.Type)=-32764));

Подчиненный запрос представляет собой инструкцию SQL SELECT, вложенную в запрос на выборку или запрос на изменение. Чтобы определить новое поле, данную инструкцию можно ввести в строку Поле в бланке запроса. Чтобы указать для данного поля условие отбора, введите инструкцию в строку Условие отбора. Подчиненные запросы используются для следующего:

проверка наличия результатов подчиненного запроса (используются зарезервированные слова EXISTS или NOT EXISTS);

поиск значений в основном запросе, которые равны, превышают или меньше значений, возвращаемых подчиненным запросом (используются зарезервированные слова ANY, IN или ALL);

создания подчиненных запросов внутри подчиненных запросов (вложенные запросы)






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.