Использование элементов управления DataCombo и DataList
Элементы управления DataCombo и DataList очень похожи на стандартные элементы управления списком и полем со списком, но имеют некоторые важные различия, которые делают их чрезвычайно адаптируемыми и полезными в приложениях баз данных. Оба элемента управления могут автоматически заполняться полями базы данных, к которым привязаны эти элементы управления. Кроме того, они могут при желании передать выбранное поле второму элементу управления данными, что делает их пригодными для создания приложений «таблицы поиска».
Возможное использование
1. В реляционной базе данных используйте данные из одной таблицы для предоставления значений для ввода во вторую (связанную) таблицу. Например, в базе данных инвентаризации имена поставщиков хранятся в таблице, и каждый поставщик имеет уникальный идентификатор. Другая таблица, показывающая продукты, использует эти идентификаторы, чтобы указать, какой поставщик поставляет продукт. Вы можете использовать элемент управления DataList для отображения имени поставщика, одновременно (невидимо) предоставляя идентификатор поставщика в таблицу продуктов.
2. Разрешить пользователям сузить поиск, выбрав критерий из раскрывающегося списка. Например, приложение базы данных отчетов о продажах может использовать элемент управления DataList, чтобы позволить пользователю выбирать штат или регион продаж. После того как выбор сделан, он автоматически передается второму элементу управления данными, который отвечает за поиск записей о продажах для выбранной области.
Как и соответствующие встроенные элементы управления, основное различие между элементами управления DataList и DataCombo заключается в том, что элемент управления DataCombo предоставляет текстовое поле, в котором можно редактировать содержимое.
Описание возможности элементов управления DataList и DataCombo объединять таблицы базы данных см. в разделе «Соединение двух таблиц с помощью элементов управления DataCombo и DataList». Чтобы создать простое приложение базы данных, использующее связанные таблицы, см. раздел «Создание простого приложения DataCombo».
Примечательные свойства управления
Некоторые важные свойства элементов управления DataList и DataCombo включают в себя:
Обратите внимание, что свойство DataFormat элемента управления DataCombo является свойством Extender. Поэтому он всегда виден на странице свойств и может быть установлен в коде. Однако элемент управления DataCombo форматирует только самый верхний элемент в своем списке. Это может быть менее важно для конечного пользователя, который видит форматированный верхний элемент и может просто выбрать его из неформатированного списка. Форматированные элементы также могут ввести конечных пользователей в заблуждение, заставив их думать, что элементы форматируются перед вводом в базу данных. По этим причинам рекомендуется не устанавливать свойство DataFormat при использовании элемента управления DataCombo.
Подробности. Пошаговое руководство, демонстрирующее использование свойства BoundText, см. в разделе «Создание DataGrid с подключенным элементом управления DataList». Полный список свойств и методов этих элементов управления см. в разделах «Элемент управления DataList» и «Элемент управления DataCombo».
Соедините две таблицы с помощью элементов управления DataCombo и DataList.
Отличительной особенностью элементов управления DataCombo и DataList является возможность доступа к двум разным таблицам и связывания данных из первой таблицы с полем второй таблицы. Это делается с использованием двух источников данных (таких как элемент управления ADOData или среда данных).
Реляционные таблицы и «недружественные» значения
В реляционной базе данных не вся информация для повторного использования хранится в нескольких местах. Большая часть этой информации хранится в наборе записей, состоящем из нескольких полей; среди этих полей есть поле «идентификатора», которое однозначно идентифицирует набор записей. Например, база данных Biblio, предоставляемая Visual Basic, хранит названия нескольких издательских компаний в таблице под названием Publishers. Эта таблица включает в себя множество полей, таких как адрес, город, почтовый индекс и номер телефона. Но для простоты рассматриваются только два основных поля этой таблицы: Name и PubID. В поле «Имя» хранится имя издателя, а в поле «PubID» — относительно «недружественное» значение, например число или код. Но это недружественное значение важно, поскольку оно однозначно идентифицирует издателя и служит средством связывания всего набора записей. Кроме того, это значение будет храниться в нескольких наборах записей во второй таблице.
Имя второй таблицы — «Названия», и каждый набор записей содержит информацию, включая название, год публикации, международный стандартный номер книги (ISBN) и т. д. Имя одного из этих полей — PubID. Имя этого поля такое же, как и у соответствующего поля в таблице «Издатели», поскольку в этом поле хранится значение, которое связывает этот заголовок с конкретным издателем.
Это возможное решение представляет собой небольшую проблему: в приложении базы данных, которое позволяет пользователям вставлять новые названия, пользователь должен каким-то образом ввести целое число, идентифицирующее издателя. Если пользователь может запомнить уникальный идентификатор каждого издателя, то это еще возможно, но если с одной стороны пользователь может видеть имя издателя, а с другой стороны соответствующее значение хранится в базе данных, то будет выглядеть удобнее. Элементы управления DataList и DataCombo могут легко решить эту проблему.
Два источника данных, три поля, без кодировки
Для решения этой проблемы элементы управления DataList и DataCombo используют два источника данных. При отображении только имени издателя (из таблицы Publishers), элемент управления DataList или DataCombo записывает только значение поля PubID в таблицу Titles. В окне «Свойства» установите для параметра RowSource источник данных, который предоставляет данные для записи (т. е. таблицу «Издатели»). Затем установите для свойства DataSource источник данных, в который должны быть записаны данные (т. е. таблица Titles). Наконец, установите свойства DataField, ListField и BoundColumn. На следующем рисунке показано, как назначить два источника данных (в виде двух элементов управления данными) и три поля элементу управления DataCombo:
Вкратце, свойство ListField определяет, какое поле отображается элементом управления. В данном случае это имя издателя. С другой стороны, свойство BoundColumn определяет, какое поле в таблице Publishers передает фактическое необходимое значение в таблицу Title. Обратите внимание, что поле PubID в таблице «Издатели» нельзя (и не следует) редактировать. Вместо этого значение поля PubID записывается в поле, указанное свойством DataField. В этом примере этим атрибутом является поле PubID в таблице Titles.
В следующей таблице представлен обзор этих свойств и способов их использования.
Обратите внимание, что элементы управления DataList и DataCombo также можно использовать с одним элементом управления данными. Для этого можно задать свойства DataSource и RowSource для одного и того же элемента управления данными, а свойства DataField и BoundColumn — для одного и того же поля в наборе записей элемента управления данными. В этом случае список будет заполнен значениями ListField из того же обновляемого набора записей. Если указано свойство ListField, но не задано свойство BoundColumn, BoundColumn будет автоматически присвоено поле ListField.
Подробности Если вы хотите шаг за шагом создать простое приложение базы данных с помощью элемента управления DataCombo, см. «Создание простого приложения DataCombo».
->