назад | содержание | вперед

Глава 17. Управление данными.

В настоящей главе обсудим создание форм для ввода и редактирования данных с использованием компонентов ADO (ActiveX Data Object). Технология ADO является новейшим средством доступа к различным типам данных, которую рекомендуется применять при разработке приложений в Visual Basic 6.0.

ADO позволяет программе получить доступ к базе данных с помощью провайдера OLE DB, который представляет собой интерфейс, обеспечивающий доступ к различным источникам данных.

При использовании ADO нам встретятся две основные группы объектов.

Подключение компонентов ADO к проекту

Чтобы использовать компоненты ADO в проекте, необходимо подключить библиотеки, которые их содержат. Для этого вам необходимо в меню Project (Проект) выбрать команду References (Ссылки), а затем в диалоговом окне References (рис. 17.1) установить флажки рядом с наименованиями следующих библиотек:

Рис. 17.1. Диалоговое окно References

Для того чтобы использовать элементы управления, которые применяю! технологию ADO при создании и редактировании форм, необходимо эти компоненты поместить на панель инструментов. Для этого в меню Project (Проект) выберите команду Components (Компоненты) и в диалоговом окне Components установите флажки рядом с именами следующих компонентов:

Элемент управления ADO Data Control

В Visual Basic появился новый объект для управления данными — ADO Data control, который имеет непосредственную связь с набором записей и позволяет пользователю перемещаться по нему в любом направлении.

Рис. 17.2. Размещение объекта ADO Data Control в форме

На рис. 17.2 показан размещенный в форме элемент управления ADO Data Control. Он состоит из пяти объектов, представленных в табл. 17.1.

Таблица 17.1. Объекты, входящие в состав элемента управления ADO Data Control

Объект

Назначение

Осуществляет переход на первую запись

Осуществляет переход на предыдущую запись

<заголовок>

Отображает заголовок элемента, определяемый свойством Caption

Осуществляет переход на следующую запись

Осуществляет переход на последнюю запись


Элемент управления ADO Data Control обладает свойствами, описанными в табл. 17.2.

Таблица 17.2. Свойства элемента управления ADO Data Control

Свойство

Описание

BOF и EOF

Свойства, которые содержат признак того, что текущая строка находится перед первой строкой или после последней строки, соответственно

CacheSize

Количество строк, выбираемых в память

CommandTimeout

Время ожидания выполнения команды, после превышения которого выдается сообщение об ошибке

CornmandType

Тип выполняемой команды

ConnectionString

Содержит информацию, необходимую для соединения с источником данных

ConnectionTimeout

Время ожидания соединения с источником данных, после превышения которого выдается сообщение об ошибке

CursorLocation

Устанавливает или возвращает местонахождение курсора

CursorType

Тип курсора, используемый в объекте Recordset

LockType

Тип блокировки

MaxRecords

Максимальное количество строк, передаваемых объекту

Recordset

Mode

Устанавливает ограничения для редактирования данных

Password

Пароль, который будет использоваться при доступе к данным

Recordset

Возвращает или устанавливает ссылку на объект Recordset

RecordSource

Данное свойство содержит наименование таблицы или запроса и определяет содержимое объекта Recordset

UserName

Имя пользователя, используемое при создании объекта



Элемент управления ADO Data control характеризуется событиями, описанными в табл. 17.3.

Таблица 17.3. События элемента управления ADO Data Control

Событие

Описание

EndOfRecordset

Возникает при достижении последней записи в объекте Recordset

FetchComplete

Возникает после заполнения всех записей в объекте

Recordset

FetchProgress

Возникает периодически во время заполнения записей в объекте Recordset

WillChangeField, FieldChangeComplete

Данные события возникают соответственно до и после изменения какого-либо поля или полей в объекте

Recordset

WillChangeRecord, RecordChangeComplete

Данные события возникают соответственно до и после изменения какой-либо записи или записей в объекте

Recordset

WillChangeRecordset, RecordsetChangeComplete

Первое событие возникает до изменения данных в объекте Recordset, а второе — после изменения данных

WillMove, MoveComplete

События возникают соответственно до и после изменения текущей позиции в объекте Recordset


 

Соединение элемента с источником данных

Для соединения элемента управления ADO Data Control с источником данных используется свойство ConnectionString диалогового окна Properties (Свойства). Чтобы ввести информацию в это свойство, нажмите кнопку с тремя точками в правом столбце свойства. Откроется диалоговое окно Ргоperty Pages (рис. 17.3), в котором можно будет настроить соединение с источником данных тремя способами, используя:

Рис. 17.3. Диалоговое окно для настройки строки соединения с источником данных

Если вы хотите настроить соединение с источником данных с помощью файла Data Link, то вам необходимо выбрать опцию Use Data Link File и с помощью кнопки Browse выбрать в диалоговом окне Open нужный файл.

Для соединения с источником данных с помощью ODBC установите опцию Use ODBC Data Source Name и в раскрывающемся списке выберите требуемый источник данных ODBC. Если в списке отсутствует источник данных, который вы хотели бы использовать, то нажмите кнопку New для вызова мастера настройки нового источника данных ODBC.

Третий способ настройки соединения с источником данных подразумевает непосредственный ввод строки соединения. Для использования строки соединения с источником данных выберите опцию Use Connection String и введите вручную текст строки в расположенное под опцией поле. Для формирования строки соединения служит диалоговое окно Data Link Properties (Свойства связи с данными) (рис. 17.4), которое открывается при нажатии на кнопку Build, расположенную справа от поля ввода.

Диалоговое окно Data Link Properties содержит четыре вкладки. На вкладке Privider (Поставщик услуг) в списке OLE DB Privider(s) (Поставщики OLE DB) вам необходимо выбрать поставщика услуг данных. Для продолжения настройки нажмите кнопку Next (Далее) или выберите вкладку Connection (Подключение) (рис. 17.5), на которой вы можете настроить соединение.

Рис. 17.4. Диалоговое окно Data Link Properties

Рис. 17.5. Вкладка Connection диалогового окна Data Link Properties

Замечание

Для каждого поставщика данных параметры для настройки соединения различны. В качестве примера рассмотрим вариант для настройки соединения с базой данных SQL Server 7.0.

Как видно из рисунка, в первую очередь надо выбрать из раскрывающегося списка наименование сервера баз данных. После этого необходимо ввести информацию о пользователе, которая включает в себя псевдоним пользователя и пароль. Последним этапом настройки соединения будет выбор базы данных из раскрывающегося списка или путем ввода имени базы данных в поле ввода.

На вкладке Advanced (Дополнительно) (рис. 17.6) размещены дополнительные параметры для настройки соединения с источником данных.

В области Network settings (Параметры сети) вкладки Advanced расположены следующие раскрывающиеся списки:

Список

Описание

Impersonation level

Уровень представления, используемый сервером при исполнении роли клиентов

Protection level

Определяет уровень защиты данных при обмене между сервером и клиентом



В области Other (Другое) вкладки Advanced размещены дополнительные параметры настройки соединения. Поле ввода Connect timeout (Время ожидания соединения) устанавливает промежуток времени, через который после начала соединения попытка соединения прекращается.

С помощью списка Access permissions (Права доступа) можно установить ограничения для работы с данными.

На вкладке All (Все) (рис. 17.7) диалогового окна Data Link Properties предоставляется возможность изменять все свойства, которые допустимы для выбранного поставщика данных.

Рис. 17.6. Вкладка Advanced диалогового окна Data Link Properties

Рис. 17.7. Вкладка All диалогового окна Data Link Properties

Для изменения параметра выполните следующие действия:

1. Выберите свойство, которое необходимо изменить.

2. Нажмите кнопку Edit Value (Изменить значение), расположенную в нижней части диалогового окна.

3. В открывшемся диалоговом окне Edit Property Value (Изменение значения свойства) введите значение свойства в поле Property Value (Значение свойства).

4. После изменения значения свойства нажмите кнопку ОК. Для отмены изменений нажмите кнопку Cancel (Отмена).

Определение источника записей

После того как для элемента управления ADO Data control было настроено соединение с источником данных, можно приступить к определению источника записей. Для этого в диалоговом окне Property Pages элемента управления ADO Data Control перейдите сначала на вкладку Authentication (рис. 17.8), и введите имя пользователя и пароль для активизации соединения с источником данных.

Рис. 17.8. Вкладка Authentication диалогового окна Property Pages

Затем можно непосредственно перейти к настройке источника записей, воспользовавшись вкладкой RecordSource (Источник записи) (рис. 17.9) диалогового окна Property Pages.

Параметры настройки данной вкладки описаны в табл. 17.4.

Таблица 17.4. Параметры настройки вкладки RecordSource

Объект

Описание

CommandType (Тип команды)

Раскрывающийся список предназначен для выбора типа команды, которая будет использоваться для получения источника записей

Table or Stored Procedure Name (Наименование таблицы или хранимой процедуры)

Если в качестве источника записей выбрана таблица или хранимая процедура, то в данном раскрывающемся списке можно выбрать наименование хранимой процедуры или таблицы

Command Text (SQL) (Текст команды)

В текстовое поле вводится SQL-выражение или какая-либо другая команда, которая может возвращать источник записей



Рис. 17.9. Вкладка RecordSource для настройки источника записей

Использование элемента ADO Data Control в форме

Рассмотрим использование элемента ADO Data Control в форме. Для этого выполните следующие действия:

1. Откройте новый проект.

2. Разместите в форме проекта элемент управления ADO Data control. Для этого дважды щелкните кнопку Adodc ¦Я на панели элементов управления.

3. Настройте соединение с источником данных для элемента управления ADO Data Control, как это было описано выше.

4. После настройки соединения с источником данных перейдите к настройке источника записей. Для этого вызовите диалоговое окно Property Pages для элемента ADO Data control. Перейдите на вкладку RecordSource и в раскрывающемся списке Command Type выберите значение adCmdTable. Из списка Table or Stored Procedure Name (Наименование таблицы или хранимой процедуры) выберите таблицу Customer с информацией о клиентах.

5. После настройки элемента ADO Data Control можно приступить к размещению в форме элементов управления для отображения данных из таблицы. Для удобства рекомендуется располагать элементы таким образом, чтобы пользователю было удобно работать с формой. На рис. 17.10 показано размещение элементов для просмотра информации о покупателях.

Рис. 17.10. Форма с размещенными элементами управления для просмотра информации о покупателях

Рис. 17.11. форма для просмотра покупателей в режиме выполнения

6. Далее необходимо связать элементы отображения данных с элементом ADO Data control. Для каждого элемента управления выполните следующие действия:

7. После завершения настройки всех элементов формы, запустите проект на выполнение и просмотрите полученный результат (рис. 17.11).

Использование окружения данных при создании формы

Гибким и удобным способом соединения с источником данных является использование в проекте окружения данных (Data Environment). Основное его преимущество заключается в том, что при необходимости изменения параметров соединения с базой данных вам будет достаточно изменить эти параметры в окружении данных для объекта connection, и все объекты Command, связанные с ним, будут учитывать эти изменения. Если же в каждой форме настроено отдельное соединение, то вам придется исправлять изменившиеся параметры во всех формах.

Рис. 17.12. Конструктор для редактирования окружения данных

Для создания окружения данных в проекте выполните команду Add Data Environment (Добавить окружение данных) меню Project (Проект). На экране появится конструктор для редактирования окружения данных (рис. 17.12).

Автоматически в окружении данных создается объект Connection, представляющий собой соединение с источником данных. Настройка соединения осуществляется так же, как и для элемента управления ADO Data control.

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

Настройка объекта Command

Настройка параметров объекта command в общем похожа на настройку источника записей для ADO Data control. Различие состоит в том, что при настройке параметров для объектов Command предоставляется возможность определять большее количество параметров.

Для вызова диалогового окна Свойства (рис. 17.13) объекта command выполните следующие действия:

1. Выберите определяемый объект Command.

2. Нажмите правую кнопку мыши и выберите из контекстного меню команду Properties (Свойства).

Рис. 17.13. Диалоговое окно Свойства для объекта Command

В поле ввода Command Name задается наименование объекта command. Раскрывающийся список Connection позволяет указать соединение, с помощью которого объект получает доступ к источнику данных.

В области Source of Data расположен переключатель, позволяющий указать источник записей. Если выбрана опция Database Object, то в одноименном раскрывающемся списке можно выбрать один из объектов базы данных, описанных в табл. 17.5.

Таблица 17.5. Обьекты базы данных, используемые для указания источника записей

Объект базы данных

Назначение

Stored Procedure

С помощью объекта Command вызывается на выполнение хранимая процедура базы данных

Table Данные выбираются из таблицы

View

Данные выбираются из представления, созданного в базе данных

Synonym

Источником записей объявляется синоним, являющийся объектом базы данных


 

После того как задан тип объекта базы данных, необходимо с помощью раскрывающегося списка Object Name (Имя объекта) выбрать имя объекта.

Иногда приходится сталкиваться с ситуациями, когда невозможно использовать ни один из выше перечисленных объектов базы данных. В таком случае в диалоговом окне предоставляется возможность для самостоятельного написания текста команды. Для этого вам необходимо в области Source of Data выбрать опцию SQL Statement и в поле редактирования SQL Statement ввести текст команды.

Вкладка Parameters

Вторая вкладка диалогового окна Свойства имеет название Parameters (Параметры) (рис. 17.14) и используется для задания параметров выбранной команды.

В области Parameters вкладки расположен список всех параметров. В правой части вкладки Parameters расположена область Parameters Properties, содержащая поля для определения хранимых процедур. Назначение этих полей описано в табл. 17.6.

Таблица 17.6. Параметры хранимой процедуры

Поле ввода

Назначение

Name

Наименование параметра

Direction

Тип направления параметра: Input, Output, InpuVOutput

Data Type

Тип данных параметра

Precision

Точность, с которой задается числовой параметр

Scale

Количество знаков после запятой для числовых параметров

Size

Максимальное значение числового параметра в байтах

Required

Указывает, является ли параметр обязательным

Value

Значение параметра



Рис. 17.14. Вкладка Parameters диалогового окна Свойства

Вкладка Relation

На вкладке Relation (Связь) (рис. 17.15) предоставляется возможность для установления соединения с родительским объектом command.

Для создания соединения необходимо установить флажок Relate to a Parent Command Object (Связь с родительским объектом command), расположенный в верхней части вкладки. Раскрывающийся список Parent Command предназначен для выбора вышестоящего объекта command, с которым связывается текущий объект.

В области Relation Definition (Определение связи) расположены параметры для настройки соединения.

Для добавления нового соединения выполните следующие действия:

1. Из раскрывающегося списка Parent Fields выберите поле вышестоящего Объекта Command.

2. Из списка Child Fields/Parameters выберите поле текущего объекта command.

3. Нажмите кнопку Add. Новое соединение добавляется в список, располагающийся в нижней части вкладки.

Если вам необходимо удалить соединение, то для этого выберите соединение и нажмите кнопку Remove.

Рис. 17.15. Вкладка Relation диалогового окна Свойства

Вкладка Grouping

Вкладка Grouping (Группировка) используется для определения группировки данных.

Флажок, расположенный в верхней части вкладки, в установленном состоянии позволяет выбрать поля, по которым будет осуществляться группировка. Поле Grouping Command Name области Grouping Definition (Определение группировки) позволяет задать наименование группировки для объекта command.

В списке Fields in Command размещены все доступные для группировки поля, а в списке Fields Used for Grouping — поля, по которым будет осуществляться группировка данных. Между списками расположены кнопки, позволяющие перемещать поля из одного списка в другой.

Вкладка Aggregates

Для получения итоговых значений по отдельным полям объекта command используется вкладка Aggregates.

Область Aggregates позволяет сформировать список переменных, являющихся итоговыми значениями. Под списком расположены две кнопки. Кнопка Add добавляет в список новую переменную, a Remove — удаляет выделенную в списке переменную.

В области Aggregate Settings вкладки расположены поля, предназначенные для настройки параметров переменной. В поле Name задается наименование переменной. Раскрывающийся список Function содержит список функций, используемых для вычисления следующих итоговых значений:

Раскрывающийся список Aggregate on содержит два значения. При выборе значения Grouping значение переменной вычисляется по группе. Выбор значения Grand Total указывает на необходимость вычисления по всей выборке.

Из раскрывающегося списка Field можно выбрать поле объекта, по которому будет вычисляться итоговое значение.

После завершения настройки для сохранения всех изменений необходимо нажать кнопку Применить.

Вкладка Advanced

Вкладка Advanced используется для настройки дополнительных параметров объекта command.

В области Recordset Management вкладки расположены параметры для настройки источника записей.

Раскрывающийся список Cursor Type (Тип курсора) предназначен для установки типа курсора.

Замечание

Список Cursor Type доступен только при использовании курсора, размещенного на сервере.

Для выбора способа размещения курсора (на сервере или на клиенте) используется раскрывающийся список Cursor Location (Расположение курсора).

При работе с записями существует возможность блокировки отдельных записей при редактировании. Чтобы установить тип блокировки, используется раскрывающийся список Lock Type (Тип блокировки), в котором находятся следующие варианты блокировок:

Блокировка

Описание

Read Only

Блокировка при работе записей не используется, так как записи используются только для чтения

Pessimistic

Пессимистическая блокировка записей. Блокируется редактируемая запись. Освобождение от блокировки происходит при переходе на следующую запись

Optimistic

Оптимистическая блокировка записей. Позволяет редактировать текущую запись в других сеансах работы и блокирует запись только при сохранении данных на диске

Batch optimistic

Пакетная оптимистическая блокировка записей


 

В поле ввода Cache Size (Размер кэша) устанавливается размер кэша для объекта Command. По умолчанию устанавливается размер в 10 записей.

Для того чтобы объект command возвращал результирующее множество, необходимо установить флажок Recordset Returning.

Для настройки конфигурации объекта command используются параметры, расположенные в области Command Configuration:

Параметр

Описание

Command Timeout

В этом поле ввода устанавливается время, через которое при неудачной попытке обращения к объекту Command выполнение прерывается

Мах Records

Содержит максимальное количество строк, которое возвращается из объекта Command при выполнении

Prepare Before Execution

Данный флажок в установленном значении позволяет подготавливать объект Command к работе при первом обращении к нему

All Records

Если установить этот флажок, то объект Command при выполнении будет возвращать все записи


 

Область Advanced содержит поле ввода Call Syntax, которое позволяет использовать ADO для вызова хранимых процедур. Это может служить для увеличения количества параметров или установки значений параметров.

Размещение полей объекта Command в форме

Объект command удобно использовать при создании форм, предназначенных для просмотра и редактирования данных. Для создания формы редактирования списка покупателей выполните следующие действия:

1. Создайте в окружении данных новый объект Command. Выберите активное соединение для команды.

2. Настройте объект command таким образом, чтобы он выбирал данные из отдельной таблицы. В нашем случае это будет таблица Customer (Список покупателей).

3. Откройте форму проекта, в которой будете размещать поля объекта Command.

4. Для размещения в форме полей необходимо выбрать объект Command в окружении данных (рис. 17.19), нажать левую кнопку мыши и, удерживая ее в нажатом состоянии, перенести в форму. После чего отпустить кнопку мыши.

Рис. 17.19. Подготовка к размещению полей объекта Command в форме редактирования

На рис. 17.20 показан результат расположения полей в форме. Нужно отметить, что все размещенные объекты будут автоматически связаны с объектом Command. После запуска формы на выполнение можно увидеть, что форма успешно отображает данные из таблицы базы данных (рис. 17.21).

Рис. 17.20. Поля объекта Command, размещенные в форме редактирования

Рис. 17.21. Созданная форма в режиме выполнения

Использование элемента ADO Data Control для перемещения по данным

В форме, созданной с использованием объекта Command и представленной на рис. 17.21, отсутствуют объекты управления перемещением по записям таблицы. Для управления передвижением курсора по записям таблицы подходит элемент управления ADO Data Control. Для добавления этого элемента в созданную нами с помощью объекта command форму выполните следующие действия:

1. Разместите в форме элемент управления ADO Data Control.

2. Для того чтобы связать элемент ADO Data control с результирующим множеством, полученным с помощью объекта command, добавьте в код обработки события Form_Activate для формы следующую строку кода:

Set adoCustomer.Recordset = deSales.rscomCustomer

3. После этого сохраните форму и запустите ее на выполнение. Результат представлен на рис. 17.22.

Рис. 17.22. Просмотр записей с использованием объекта ADO Data Control

Замечание

В код обработки события для формы мы добавили присвоение для результирующего множества элемента ADO Data Control. В качестве результирующего множества, которое возвращает набор записей, мы взяли rscomCustomer из окружения данных deSales. Результирующее множество rscomCustomer автоматически создается при выполнении объекта Command comCustomer.

Настройка элемента ADO Data Control для отображения номера покупателя

Для наглядности при перемещении по записям таблицы можно в заголовке элемента ADO Data control отображать номер текущей записи. Для этого вам будет достаточно выполнить следующие действия: *

1. Откройте окно редактора кода для элемента ADO Data control.

2. Выберите событие MoveCompiete и добавьте в него следующий код:

adoCustomer.Caption = Покупатель №: &

CStr(adoCustomer.Recordset.AbsolutePosit ion)

3. После этого сохраните форму и запустите ее на выполнение. Результат показан на рис. 17.23.

Рис. 17.23. Отображение номера записи в заголовке элемента ADO Data Control

Одновременная работа с несколькими записями

Чтобы работать одновременно с несколькими записями, в Visual Basic 6 представлены следующие элементы:

Элемент

Назначение

DataGrid

Элемент управления для отображения и редактирования нескольких записей одновременно

FlexGrid

Элемент управления для просмотра нескольких записей одновременно. Он не позволяет редактировать данные

DataList

Этот элемент является списком, отображающим элементы, выбранные из источника данных


 

Использование элемента DataGrid

Как было сказано выше, элемент DataGrid предоставляет возможность просмотра и редактирования нескольких записей из источника данных. Для создания формы, которая будет использовать элемент DataGrid, выполните следующие действия:

1. Откройте форму, с помощью которой хотите просматривать информацию из источника данных.

2. Разместите в ней элемент управления DataGrid (рис. 17.24). Для этого дважды щелкните кнопку DataGrid на панели элементов управления.

Рис. 17.24. Элемент DataGrid, размещенный в форме

3. Для свойства DataSource (Источник данных) выберите окружение данных, элемент ADO Data control или результирующее множество Recordset, объявленное в форме.

4. В том случае, если в свойстве DataSource было выбрано окружение данных, то с помощью свойства DataMember вам необходимо выбрать объект Command, который вы хотите использовать в форме.

После выполненных действий форма уже является работоспособной, т. к. при запуске формы автоматически будут созданы все необходимые столбцы для отображения данных.

Но в данном случае используются не все возможности элемента DataGrid, рассмотрим их.

 

назад | содержание | вперед

Hosting uCoz