Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Met_BD_DAO.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
753.15 Кб
Скачать

8.4. Описание проекта dbStructure

Приложение DBStruct (см. рис. 17) позволяет открыть любую БД и про смотреть имена ее таблиц, их структуру, запросы, сохраненные в БД, и их определения. Таблицы и запросы БД отображаются в двух списках слева. Под именем каждой таблицы находятся названия ее индексов. Щелкните на имени таблицы, чтобы отобразить ее поля, или на имени запроса, чтобы отобразить его определение.

Рис.17. Приложение DatabaseStructure

Код приложения DatabaseStructure

Option Explicit

Dim DB As Database

Private Sub Command1_Click()

On Error GoTo NoDatabase

CommonDialog1.CancelError = True

CommonDialog1.Filter = "Databases|*.mdb"

CommonDialog1.ShowOpen

If CommonDialog1.FileName <> "" Then

Set DB = OpenDatabase(CommonDialog1.FileName)

Label1.Caption = CommonDialog1.FileName

End If

FldList.Clear

TblList.Clear

Dim tbl As TableDef

Dim idx As Index

Dim TName As String

Debug.Print "К-во таблиц в БД” & DB.TableDefs.Count

For Each tbl In DB.TableDefs

If Left(tbl.Name, 4) <> "MSys" And Left(tbl.Name, 4) <> "USys" Then

TblList.AddItem tbl.Name

For Each idx In tbl.Indexes

TblList.AddItem " " & idx.Name

Next

End If

Next

Dim qry As QueryDef

Debug.Print "К-во запросов в БД " & DB.QueryDefs.Count

For Each qry In DB.QueryDefs

QryList.AddItem qry.Name

Next

NoDatabase:

MsgBoxErr.Description

End Sub

Private Sub TblList_Click()

Dim fld As Field

Dim idx As Index

If Left(TblList.Text, 2) = " " Then Exit Sub

FldList.Clear

For Each fld In DB.TableDefs(TblList.Text).Fields

FldList.AddItem fld.Name

Next

End Sub

Private Sub QryList_Click()

Dim qry As QueryDef

txtSQL.Text = DB.QueryDefs(QryList.ListIndex).SQL

End Sub

Рассмотрим основные части этой программы. Определенная пользователем БД открыта и назначена объектной переменной DR. Далее производится просмотр элементов объекта TableDefs и добавление имени каждой таблицы к списку Tables. Наряду с таблицами, задаваемыми при разработке БД, Access содержит несколько системных таблиц. Имена системных таблиц начинаются префиксов MSys и USys. Игнорирование этих таблиц выполняется с помощью фрагмента:

If Left(tbl.Name,4) <> "MSys" And Left(tbl.Name,4)<> "USys" Then

………………………………………………………………………………

После отображения имени текущей таблицы программа просматривает индексы таблицы с помощью ее объекта Indexes. После имен всех таблиц и индексов отображаются названия всех запросов, сохраненных в БД.

Если щелкнуть кнопкой мыши на имени таблицы в списке Tables, то ее поля oтoбразятся в списке Selected Tables Fields (Выбранные поля таблицы). Аналогично, после щелчка на имени запроса в текстовом поле Selected Query Definition (Определение выбранного запроса) появится его определение (SQL-оператор).

Если щелкнуть кнопкой мыши на элементе, который начинается с двух пробелов (это имя индекса), программа отреагирует. Если элемент не начинается с двух пробелов, то программа очищает элемент управления ListBox, в котором отображаются имена полей, и список заполняется этими именами. Чтобы обратится к ним, программа просматривает элементы семейства DB.TableDefs (TblList.Text).Fields. В каждой итерации к списку добавляется имя очередного поля (fld. Name). Можно отобразить тип поля с помощью свойства Type, а его размер (в байтах)- с помощью свойства Size.

К объектам TableDefs обращение осуществляется по имени таблицы, а к объектам QueryDefs - по имени сохраненного запроса. К ним можно обратиться и с помощью индекса, но так как системные таблицы были опущены, то порядок таблиц в списке Tables не последовательное.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]