List
Элемент управления List связан с определенным столбцом RecordSet и используется как поисковая таблица. Он может использоваться как таблица просмотра для упрощения передвижения по RecordSet (рис. 17.21).

Рис. 17.21. Приложение DBList: элемент управления List используется для просмотра
Этот список содержит имена всех товаров в списке
Products базы данных NWIND, загруженных во время запуска программы. Каждый раз, когда выбирается новый элемент, программа обновляет связанные с данными элементы управления, размещенные на форме, чтобы отобразить поля выбранной записи.
Элемент управления List отличается от элементов управления, связанных с данными, которые были рассмотрены ранее: его можно подсоединить к двум элементам управления Data. Он имеет стандартные свойства DataSource/DataField, которые используются как любой другой элемент управления, связанный с данными, и свойства RowSource и List Field, которые определяют, как заполняется элемент управления.
• RowSource задает источник (RecordSet или элемент управления Data) для начальной загрузки списка.
• ListFieId задает поле, которое используется для заполнения списка.
VB6 в действии: проект DBList
Приложение DBList демонстрирует использование связанного с данными элемента управления List в качестве инструмента перемещения. Форма, показанная на рис. 17.21, содержит ряд полей из таблицы Products базы данных NWIND. Создайте ее, связывая различные текстовые поля с соответствующими полями таблицы элементом управления Data, будто вы собираетесь перемещаться по списку товаров с помощью кнопок перемещения, размещенных на элементе управления Data.
Проблема с элементом управления Data состоит в том, что невозможно реально использовать его для перемещения по RecordSet, даже если он проиндексирован, потому что в каждый момент видима только одна запись. Если бы было можно помещать ключевые значения в элемент управления ListBox и использовать его как инструмент перемещения, то пользовательский интерфейс стал бы удобнее.
ComboBox
Элемент управления ComboBox используется как поисковая таблица (см. приложение Data Entry, рассмотренное ранее в этой главе). Чтобы заполнить список элемента управления ComboBox, необходимо установить свойство RowSource на элемент управления Data, соединенный с базой данных и таблицей, из которой выбираются данные.
Приложение Data Entry (папка DEntry на компакт-диске) содержит скрытый элемент управления Data (называемый Data2), который соединен с таблицей Publishers базы данных BIBLIO. Свойство ListField элемента управления ComboBox — это имя поля, использующееся для заполнения списка. В приложении Data Entry это свойство установлено на поле Name таблицы Publishers. При запуске программы элемент управления ComboBox автоматически заполняется именами издателей из базы данных (рис. 17.22).

Рис. 17.22. Элемент управления ComboBox на форме приложения Data Entry содержит имена всех издателей из базы данных
Элемент управления ComboBox имеет обычные свойства DataSource и Data Field, как и другие элементы управления, связанные с данными. Необходимо, чтобы в приложении Data Entry элемент управления ComboBox функционировал следующим образом.
1. При запуске программы элемент управления заполняется именами всех издателей.
2. При перемещении по таблице Titles элемент управления ComboBox извлекает идентификаторы издателей из таблицы Titles, ищет это значение в таблице Publishers и отображает значение поля Name соответствующей записи в окне редактирования.
3. При добавлении новой записи пользователь определяет издателя книги, выбирая имя в элементе управления ComboBox, а элемент управления сообщает соответствующий идентификатор первому элементу управления Data.
Это выглядит сложно, но все это встроено в элемент управления ComboBox. Уже известно, как реализовать первый пункт с помощью свойств RowSource и ListField. Два других пункта типичны для элементов управления, связанных с данными. Необходимо использовать окно редактирования элемента управления ComboBox как обычное текстовое поле, связанное с полем PubID таблицы Titles. Для этого выполните следующие действия.
Grid
Элемент управления Grid - один из наиболее гибких и мощных элементов управления Visual Basic. Пользователи Microsoft Access знакомы с этим элементом управления. Связываемый с данными элемент управления Grid похож на элемент управления MSFlexGrid (см. гл.9), но имеет два отличия:
• заполняется автоматически из RecordSet,
• имеет встроенные механизмы ввода данных, с помощью которых можно редактировать RecordSet (если он может модифицироваться).
Все, что нужно сделать для заполнения элемента Grid из RecordSet — это установить его свойство DataSource на элемент управления Data. Сетка будет заполнена строками из RecordSet. Ввиду двумерного расположения данных в элементе управления Grid можно увидеть реальную структуру и содержание всего RecordSet. Этот элемент управления использовался для отображения RecordSet на некоторых рисунках в начале главы. Также он использовался для отображения результатов SQL-операторов в приложении SQLExec (которое мы сейчас рассмотрим).
VB6 в действии: проект SQLExec
Ранее в этой главе для экспериментов с SQL-операторами использовалось приложение SQLExec. Создадим это приложение. Для этого выполните следующие действия.
1. Откройте новый Standard EXE проект.
2. Чтобы добавить связанный с данными элемент управления Grid на панель Toolbox, выполните щелчок правой кнопкой мыши на Toolbox и выберите команду Components.
3. В диалоговом окне Components установите переключатель Microsoft Data Bound Grid Control. В этом проекте используется элемент управления Common Dialogs, поэтому установите переключатель Microsoft Common Dialogs Control 5.0 и щелкните на кнопке Close.
4. Создайте элементы управления (рис. 17.23). Кроме видимых элементов управления, на форме расположен элемент управления Common Dialogs (невидимый во время выполнения) и элемент управления Datal, у которого свойство Visible установлено в False

Рис. 17.23. Приложение SQLExec запросы к базе данных с помощью SQL-операторов и отображение результатов в элементе управления Grid.