- •Bde та ado
- •Введение
- •Введение в базы данных
- •Типы субд
- •Стандарт odbc
- •Технологии взаимодействия delphi с бд
- •Особенности технологии bde
- •Особенности технологии ado
- •Таблицы бд и связи между ними
- •Первичные ключи и индексы
- •Демонстрационная бд "поставщик книг"
- •Использование odbc для подключения источника данных. Внешний псевдоним бд
- •Создание внешнего псевдонима бд
- •Создание проекта с бд в технологии bde
- •Особенности использованияbdeдля соединения с источником данных
- •Структура проекта с бд и визуальными компонентами
- •Активизация проекта
- •Главная форма проекта
- •Модуль данных
- •Создание модуля данныхTDataModule
- •Создание компонента tDatabase
- •Создание компонента tTable
- •Создание компонентаTDataSource
- •Связь модуля главного окна с модулем данных
- •Связь сеткиTdbGrid и навигатораDbNavigatorcисточником данныхTDataSource
- •Связь главный-детальный между наборами данных
- •Задание реляционной связи между наборами данных
- •Активизация наборов данных
- •Недостатки полученных решений и пути их устранения
- •Объекты-столбцы сетки dbGrid
- •Объекты-поля наборов данных
- •Создание объектов-полей
- •Присоединение к наборам данных новых полей
- •Присоединение полей из других таблиц. Подстановочные поля
- •Вычисляемые поля
- •Обработчики событий компонент работы с бд
- •Обработчики событий OnGetText полей нд и компонента визуализации данныхTdbGrid
- •Установка системных переменных в обработчике событяOnCreate
- •Бизнес-правила иобработчики событий компонент работы с бд
- •Implementation
- •Sql запросы к бд
- •КомпонентtQuery
- •СозданиекомпонентаtQuery
- •ИспользованиякомпонентаtQuery
- •Свойство sql
- •Методы Open и ExecSql
- •Параметрические запросы
- •Параметрические запросы и свойство DataSource компонента tQuery
- •Связь главный-детальный с компонентомTQuery в качестве детального набора данных
- •Доступ к полям запроса
- •Обращение к значению поля при помощи свойств объектов-полейValueиAsXxxx
- •Обращение к значению поля при помощи свойств набора данных Fields и FieldValues
- •Обращение к значению поля при помощи функции набора данных FieldByName
- •Программный доступ к данным запроса
- •Общая схема программного доступа к данным запроса
- •Последовательная навигация по записям
- •Обзор событий компонентаtQuery
- •Хранимые процедуры и триггеры
- •Хранимые процедуры
- •Создание хранимых процедур
- •Вызов хранимых процедур
- •Триггеры
- •Наборы данных
- •Обзор событий класса tdbDataSet
- •Реализация каскадных изменений и бизнес-правил
- •Другие события
- •Технология ado
- •Основные особенности технологии ado
- •Реализация технологии ado в Delphi
- •Создание проекта с бд в технологии ado. Установка связи с бд
- •Создание модуля данных
- •Начало настройки связи
- •Выбор провайдера
- •Настройка провайдера
- •Настройка провайдераMicrosoftJet4.0oledbProvider
- •Настройка провайдера Microsoft ole db Provider for odbc Drivers
- •Завершение настройки связи
- •Настройка оставшихся компонент модуля данных
- •Особенности использования компонентов ado
- •Базовые объекты ado
- •ОбъектRecordset
- •ОбъектCommand
- •ОбъектParameter
- •Компонент tadoCommand
- •Свойства, методы и события ado компонентов-наборов
- •Общие свойства с bde-компонентами
- •Специфические свойства
- •Методы класса tCustomAdoDataSet
- •События класса tCustomAdoDataSet
- •Компонент tadoDataSet
- •Компонент tadoTable
- •Компонент tadoQuery
- •Компоненты визуализации данных вDelphi
- •Компонент tdbGrid
- •Свойства
- •Дополнительные возможности сетки
- •Компоненты визуализации полей текущей записи
- •Компонент tdbText
- •Компонент tdbEdit
- •Компонент tdbCheckBox
- •Компонент tdbRadioGroup
- •Списочные компоненты
- •Компонент tdbMemo
- •Компонент tdbRichEdit
- •Компонент tdbCtrlGrid
- •Компонент tdbNavigator
- •Приложение 2. Бд "поставщик книг"
- •Рекомендованная литература
Компонент tdbRadioGroup
Компонент TDBRadioGroup служит для представления фиксированного набора возможных значений поля при помощи группы переключателей. Этот компонент обладает функциональностью стандартного переключателя TDBRadioGroup, но источником данных и их приемником для него служит поле НД. На рисунке 12.9 этот компонент позволяет определить тип накладной.
Количество и названия вариантов возможных значений поля определяются в свойстве
property Items: TStrings;
Компонент будет связывать установку того или иного переключателя с соответствующим значением поля. Для этого список возможных значений определяется свойством
property Values: TStrings;
Например, для формы на рисунке 12.9 свойства Items и Values компонента dbrgType типа TDBRadioGroup определены так, как показано на рисунке 11.10.
а б
Рисунок 8.73 –Значения свойств компонента TDBRadioGroup: a ‑ Items, б ‑ Values
Списочные компоненты
Визуализирующие компоненты типа TDBListBox,TDBComboBox,TDBLookupComboBox,TDBLookupListBoxимеют связанные с ними спискиTStringsи поэтому дальше объединяются общим названиемсписочные компонентыБД.
Списочные компоненты предназначены для отображения состояния конкретного поля текущей записи НД, а также для ввода в это поле нового значения (но никак не для навигации поНД!). Первые два компонента имеют первоначально пустые списки, которые программист должен наполнить перед тем, как они станут доступными пользователю. КомпонентыTDBLookupXXXXформируют свои списки значениями, взятыми из поля другогоНД, и не нуждаются в их наполнении - вот, собственно, и вся разница между ними и первыми двумя компонентами.
Компоненты TDBListBoxиTDBLookupListBoxмогут отображать текущее значение связанного с ними поля только в том случае, если это значение совпадает с одним из списочных значений компонента, два других отображают любое значение поля, даже если этого значения нет в связанных с компонентами списках. Точно так же вводить новое значение компонентыXXXXListBoxмогут только из своих списков, в то время как компонентыXXXXComboBoxв модификацияхcsSimpleиcsComboBoxсодержат текстовую строку для ввода значения, которого нет в списке.
Компоненты TDBLookupXXXXмогут использоваться двумя способами: если в редактируемомНДесть нужное подстановочное поле, для них, как и для других рассматриваемых в этом разделе компонентов, достаточно определить лишь свойстваDataSourceиDataField, причем в последнем указать имя подстановочного поля; если вНДнет подстановочного поля, в свойствоDataSourceпомещается имя компонента-источника, связанного с редактируемымНД, в свойствоDataField- имя поля с шифром (ссылочного поля) этогоНД, в свойствоListSource- имя компонента-источника, связанного с подстановочнымНД, вListField- имя отображаемого (результирующего) поля и, наконец, вKeyField- имя индексного поля, на которое ссылается полеDataFieldредактируемогоНД. Например, в форме на рисунке12.9компонентTLookupComboBoxиспользуется для отображения имени партнера. В первом варианте использования в его свойствоDataSourceнужно поместить значениеDM.DataSource1, а в свойствоDataField- имя подстановочного поляFirm. Во втором варианте предварительно в модуле данных нужно разместить компонентDataSource3, связав его сНДFirms, в свойствоDataSourceпо-прежнему помещается значениеDM.DataSource1, а вот в свойствоDataField- имя подстановочного поляNFirm, при этом вListSource- значениеDM.DataSource3, вListField-Fnameи вKeyField-FirmID. Способ использования компонента не имеет значения: в любом случае в полеNFirmНДtbNaklsбудет помещен шифр выбранного партнера.