Хранилище данных - это файл или файлы, непосредственно создание таблицы БД. Для внутренней БД VB или MS Access - это файл формата .mdb. Для других баз это может быть каталог, содержащий файлы .dbf.
Архитектура доступа к данным в VB
Схема доступа к данным в приложении VB
пользователь | интерфейс |
процессор БД |
хранилище данных |
Процессор БД располагается между прикладной программой и физическими файлами БД. Этим определяется независимость приложения от типа БД, к которой происходит обращение. Вне зависимости от формата БД в приложении используются одни и те же объекты доступа к данных и методы программирования.
Управление пользовательским интерфейсом осуществляется кодом VB, который манипулирует объектами и методами доступа к данным и запрашивает услуги БД, например, добавление или удаление записей или выполнение запросов. Запросы услуг адресуются не файлу БД, а процессору Jet, который выполняет запрошенные операции по обработке данных и возвращает результаты приложению.
Процессор БД Jet реализован в виде набора файлов динамических библиотек .dll, которые связываются с приложением VB в процессе выполнения Dao в физические операции непосредственно с файлами БД данного формата.
Программирование работы с БД в VB заключается в создании объектов Dao, таких как Database, TableDef, Field и Index. Свойства и методы этих объектов используются для выполнения операций в БД. Результат этих операций можно вывести на экран, а данные пользователя вводятся через формы VB. Это дает большую гибкость, т.к. одни и те же объекты, свойства и методы можно использовать для доступа к БД различных форматов. Можно также создавать приложения, в которых в единственном запросе или отчете соединяются таблицы из двух и более различных БД.
VB через DAO и Jet работает со следующими БД:
1) БД VB - внутренние БД. Формат, что и у MS Access. Создаются и управляются непосредственно процессором Jet.
2) Внешние БД ISAM (индексно-посреднические организации), включая Btrieve, dBase, FoxPro 2. , 3. , Paradox. Эти БД можно создавать и обрабатывать в VB. Можно также обращаться к текстовым источникам данных и .... MS Excell и Lotus-1, 2, 3.
3) БД ODBC - интеллектуальные БД клиент-сервер: MS SQL Server, Oracle, поддерживающие стандарт ODBC.
Новый режим DAO - ODBC Direct позволяет обращаться к источникам данных ODBC, минуя процессор Jet.
Он транслирует запросы приложения в физические операции по обработке файлов БД. Он читает, записывает, изменяет БД, выполняет индексацию, блокировку, защиту и поддержание ссылочной целостности. Он также содержит процессор запросов, который принимает запросы SQL и в соответствии с ними выполняет требуемые действия в БД, а также процессор результатов, обрабатывающий результаты, возвращаемые запросами.
В процессе обработки запроса процессор Jet выдает подмножество одной из таблиц БД, хотя уже существует или временно создает новую сетку (просмотр) в памяти в виде комбинации данных из разных таблиц. Сетки, состоящей из записей, которые были извлечены из БД, соответствует объект VB RecordSet. Если сетка является дополняемой, то она называется dynaset, в противном случае - snapshop/
Доступ к БД с помощью элемента управления данными Data без программирования
Элемент управления Data ничего не отображает, а только сопровождает поток информации между приложением и БД. Для отображения информации из БД на экране используются связанные элементы управления, т.е. элементы управления, которые могут работать с элементом управления Data. Они называются data aware или data bound. К связанным элементам управления относятся: текстовые поля, надписи, флажки, элементы управления изображением, графические окна, списки, комбинированные списки, OLE. Связанные элементы должны находиться на той же форме, что и Data. Информация из БД посредством элемента управления Data будет передаваться связанному элементу и сохраняться в его свойствах (хотя он может быть невидим).
После размещения элемента управления Data на форме необходимо задать его свойства:
DataBaseName - имя БД, к которой необходимо подключиться.
RecordSource - для определения таблицы или запроса к БД, в том числе SQL-запросы.
Затем к форме добавляется связанной элемент управления и привязывается к элементу управления Data, для чего:
Свойство DataSource устанавливается по имени элемента управления Data.
Свойство DataField устанавливается по имени столбца из RecordSource.
После выполнения операции привязки, нажатие на стрелки элемента управления Data (< - первая запись, < - ... запись, > - следующая запись, > - последующая запись), будет изменять содержимое связанного элемента управления.
Другие свойства элемента управления Data.
Connect - определяет тип БД, например, FoxPro 3.0.
Exclusive = True - запрет доступа к БД, пока пользователь ее не закроет (после этого необходимо ... Share.exe)
ReadOnly (True/False)
RecordSetType - если RecordSet создается с помощью кода или элемента управления.
Метод Refresh- по этому методу все связанные элементы формы обновляют свое состояние в соответствии с текущим состоянием таблицы.
Data1.Refresh.
Он открывает БД, а также устанавливает указатель записи на первую строку в таблицу или сети просмотра.
Свойство RecordSet объекта Data - это воображаемая таблица, к которой подключен элемент Data. Это может быть реальная таблица из RecordSource или сетка просмотра, определяемая SQL-выражением.
Методы RecordSet
AddNew - очистка буфера копирования, содержащего данные, которые должны быть записаны в БД, и перемещение текущей записи в конец. = Добавление записи, которая становится текущей.
Data1.RecordSet.AddNew.
Delete - удаление текущей записи.
Update - реальная пересылка содержимого буфера копирования в таблицу или dynaset.
Edit - копирует текущую запись в буфер копирования для возможности ее редактирования.
MoveNext - перейти на следующую запись
MovePrevious - перейти на предыдущую запись
MoveLast - перейти на последнюю запись
MoveFirst - перейти на первую запись
BOF - начало файла.
EOF - конец файла.
RecordCount - количество записей с первой до текущей.
Пример. Удаление всех записей в таблице.
Data1.RecordSet.MoveFirst
Do While Data1.RecordSet.EOF
Data1.RecordSet.Delete
Data1.RecordSet.MoveNext
Loop
Свойство RecordSource - источник записей, позволяет помимо таблиц БД использовать операторы SQL, чтобы выделить подмножество записей, удовлетворяющих некоторым условиям. Это позволяет создавать программные элемента dynaset или snapshop.
Ввод следующий фраз:
Select - отбор информации из полей.
From - указывает имя таблицы.
Where - определяет условия выборки.
Group By - для распределения выбранных записей в определенные группы.
Having - определяет условие, которому должна удовлетворять следующая группа записей.
Order By - порядок сортировки выбранных записей.
Например.
Data1.RecordSource = “Select Name, Address From AdressBook ...
Data1.RecordSource = “Select Name, Address From AdressBook
Data1.RecordSource = “Select Name, Address From AdressBook Where Name = ‘Иванов’‘’
“ . . . . Like ‘’Иван” (Ивасев, Иваницкий, Иванченко...)
Select Employers.Dept, M\Name From Supervisors, Employers Where Employers.Dept = Supervisiors.Dept
Можно использовать переменные
Data1.RecordSource = “Select * From Telephone Where Name = ‘ “& A &”’”
Text1.Text
В фразе Where можно использовать конечные операции And, Or, Not для соединения нескольких выражений или операции сравнения <, <=, >, >=, <>, Between, Like, In (для записей в БД)
Например
Data1.RecordSource = “Select * From Products
Where Tovar in (Select Tovar From_ Details Where Price>=25)”
Помимо запросов SQL можно изменять (Update, Set - новое значение Where), добавлять (Insert into), удалять (Delete From) записи в таблице.
Например
Dim A As String
A = “Update Orders”
A = A + “Set Amount = Amount * 1.1, Cast = Cast * 0.97”
A = A+ ”Where Order = ‘Цемент’”
Data1.Database.Execute ... Query - запрос с воздействием
Свойство Value
Можно ссылаться на некоторое поле текущей записи, даже если на форме нет связанного элемента.
Например
Sub
Dim A As String
A = Data1.RecordSet.Fields(“Name”).Value
MsgBox “Фамилия: ” + A
End Sub
Объектная модель DAO
Объектная модель DAO - объектно - ориентированный интерфейс процессора БД Jet . Это иерархия классов, которые являются логическим представлением реляционной модели базы данных. [AAnA1] Эти классы используются для создания объектов доступа к данным, обращающихся к конкретной базе данных.
DBEngine[AAnA2]
Workspace
Database