- •Технології проектування баз даних в delphi
- •6.051001 - Метрологія та інформаційно-вимірювальні технології
- •Технології проектування баз даних в delphi
- •6.051001 - Метрологія та інформаційно-вимірювальні технології
- •1Введение
- •2Введение в базы данных
- •2.1Типы субд
- •2.2Стандарт odbc
- •2.3Технологии взаимодействия delphi с бд
- •2.3.1Особенности технологии bde
- •2.3.2Особенности технологии ado
- •2.4Таблицы бд и связи между ними
- •2.5Первичные ключи и индексы
- •2.6Демонстрационная бд "поставщик книг"
- •3Использование odbc для подключения источника данных. Псевдонимы бд
- •3.1Внешний и внутренний псевдонимы бд
- •3.1.1Создание внешнего псевдонима
- •3.1.2Проверка работоспособности внешнего псевдонима в среде Delphi
- •3.2Внутренний псевдоним бд
- •3.2.1Назначение внутреннего псевдонима бд
- •3.2.2Создание внутреннего псевдонима
- •3.2.3Преимущества использования внутреннего псевдонима и проблемы перехода на другие субд
- •4Создание проекта с бд в технологии bde
- •4.1Особенности использования bde для соединения с источником данных
- •4.2Структура проекта с бд и визуальными компонентами
- •4.3Активизация проекта
- •4.4.4Компоненты tdbGrid
- •4.5Модуль данных
- •4.5.1Создание модуля данных tDataModule
- •4.5.2Связь модуля главного окна с модулем данных
- •4.5.3Создание компонента tDatabase
- •4.5.4Создание компонента tTable
- •4.5.5Создание компонента tDataSource
- •4.5.6Связь модуля главного окна с модулем данных
- •4.5.7Связь сетки tdbGrid и навигатора dbNavigator c источником данных tDataSource
- •4.5.8Связь главный-детальный между наборами данных
- •4.5.9Задание реляционной связи между наборами данных
- •4.5.10Активизация наборов данных
- •4.5.11Недостатки полученных решений и пути их устранения
- •4.6Объекты-столбцы сетки dbGrid
- •4.6.1Создание объектов-столбцов
- •4.6.2Редактирование объекта-столбца
- •4.7Объекты-поля наборов данных
- •4.7.1Назначение объектов-полей
- •4.7.2Создание объектов-полей
- •4.7.3Присоединение к наборам данных новых полей
- •4.7.4Присоединение полей из других таблиц. Подстановочные поля
- •4.7.5Вычисляемые поля
- •4.8Обработчики событий компонент работы с бд
- •4.8.1Обработчики событий OnGetText полей нд и компонента визуализации данных tdbGrid
- •4.8.2Установка системных переменных в обработчике событя OnCreate
- •4.9Бизнес-правила и обработчики событий компонент работы с бд
- •5Sql запросы к бд
- •5.1Компонент tQuery
- •5.2Создание компонента tQuery
- •5.3Использования компонента tQuery
- •5.3.1Свойство sql компонента tQuery
- •5.3.2Методы Open и ExecSql
- •5.3.3Схема программного формирования sql-запроса
- •5.3.4Параметрические запросы
- •5.3.5Параметрические запросы и свойство DataSource компонента tQuery
- •5.3.6Связь главный-детальный с компонентом tQuery в качестве детального набора данных
- •5.4Доступ к полям запроса
- •5.4.1Обращение к значению поля при помощи свойств объектов-полей Value и AsXxxx
- •5.4.2Обращение к значению поля при помощи свойств набора данных Fields и FieldValues
- •5.4.3Обращение к значению поля при помощи функции набора данных FieldByName
- •5.5Программный доступ к данным запроса
- •5.5.1Общая схема программного доступа к данным запроса
- •5.5.2Последовательная навигация по записям
- •5.6Обзор событий компонента tQuery
- •6Хранимые процедуры и триггеры
- •6.1Хранимые процедуры
- •6.2Создание хранимых процедур
- •6.3Вызов хранимых процедур
- •6.4Триггеры
- •7Наборы данных
- •7.1Обзор событий класса tdbDataSet
- •7.1.1Реализация каскадных изменений и бизнес-правил
- •7.1.2Другие события
- •8Технология ado
- •8.1Основные особенности технологии ado
- •8.2Реализация технологии ado в Delphi
- •8.3Создание проекта с бд в технологии ado. Установка связи с бд
- •8.3.1Создание модуля данных
- •8.3.2Начало настройки связи
- •8.3.3Выбор провайдера
- •8.3.4Настройка провайдера
- •8.3.5Настройка провайдера Microsoft Jet 4.0 ole db Provider
- •8.3.6Настройка провайдера Microsoft ole db Provider for odbc Drivers
- •8.3.7Завершение настройки связи
- •8.3.8Настройка оставшихся компонент модуля данных
- •8.4Особенности использования компонентов ado
- •8.4.1Базовые объекты ado
- •8.4.2Объект Recordset
- •8.4.3Объект Command
- •8.4.8Связной компонент tadoConnection
- •8.4.9Компонент tadoCommand
- •8.5Свойства, методы и события ado компонентов-наборов
- •8.5.1Общие свойства с bde-компонентами
- •8.5.2Специфические свойства
- •8.5.3Методы класса tCustomAdoDataSet
- •8.5.4События класса tCustomAdoDataSet
- •8.6Компонент tadoDataSet
- •8.7Компонент tadoTable
- •8.8Компонент tadoQuery
- •9Компоненты визуализации данных в Delphi
- •9.1Компонент tdbGrid
- •9.1.1Свойства
- •9.1.2Дополнительные возможности сетки
- •9.2Компоненты визуализации полей текущей записи
- •9.2.1Компонент tdbText
- •9.2.2Компонент tdbEdit
- •9.2.3Компонент tdbCheckBox
- •9.2.4Компонент tdbRadioGroup
- •9.2.5Списочные компоненты
- •9.2.6Компонент tdbMemo
- •9.2.7Компонент tdbRichEdit
- •9.2.8Компонент tdbCtrlGrid
- •9.2.9Компонент tdbNavigator
- •Приложение 2. Бд "поставщик книг"
- •Рекомендованная литература
8.3.7Завершение настройки связи
Щелкните (рисунок 10.3) на кнопке ОК. Связь готова. Чтобы в дальнейшем связь с БД устанавливалась без открытия промежуточного диалогового окна с запросом имени пользователя и пароля, поместите в свойство LoginPrompt компонента ADOConnection1 значение False.
8.3.8Настройка оставшихся компонент модуля данных
В свойстве Connection созданных компонентов-таблиц ADOTable сошлитесь на компонент ADOConnection1. Этого можно не делать, если вы поместили таблицы непосредственно на дерево компонентов. В этом случае связи устанавливаются автоматически.
В свойстве TableName компонентов ADOTable выберите соответствующие таблицы БД.
В свойстве DataSet компонентов DataSource1 и DataSource2 сошлитесь соответственно на таблицы tbNakls и tbMove.
Свяжите таблицы tbNakls и tbMove отношением главная-детальная как это рассматривалось в разделе 3 или установите в свойство MasterSource таблицы ADOTable2 ссылку на источник данных DataSource1 и щелкните на кнопке с многоточием в строке свойства MasterFields, чтобы вызвать окно настройки связи. После чего выполните те же действия, что и в разделе 3.
Выполните настройку объектов-полей, возможно присоединяемых и вычисляемых, в таблицы tbNakls и tbMove, как показано в разделе 3.
Примечание. Для того чтобы преобразовать разработанный вами в технологии BDE проект с сохранением всех текстов программ, вам фактически необходимо преобразовать модуль данных исходного проекта в соответствии с описанными выше шагами, сохраняя наименования таблиц и полей неизменными.
8.4Особенности использования компонентов ado
8.4.1Базовые объекты ado
MS ADO имеет 7-мь базовых объектов: Connection, Recordset, Command, Parameter, Field Error и Property.
Компоненты ADO в палитре компонентов Delphi представляют собой надстройки над базовыми объектами, представляя большинство их свойств методов и событий в привычном для Delphi виде.
Объект Connection
Объект Connection в первую очередь предназначен для установления соединения с данными. Кроме того, этот объект обеспечивает механизм транзакций. На него может ссылаться произвольное количество объектов Command и Recordset. В этом случае объект Connection управляет транзакциями этих объектов. С объектом Connection связан набор объектов Error, в котором фиксируются все ошибки, связанные с работой объекта Connection.
8.4.2Объект Recordset
Объект Recordset представляет собой текущий НД. Он может быть получен только после выполнения метода Execute какого-либо объекта Command. С объектом Recordset автоматически связывается набор объектов Field, в которых описываются все поля НД. Объект Recordset способен хранить нужные записи, перемещаться по ним, добавлять, удалять и редактировать записи как в обычном (при одновременном изменении физических таблиц БД), так и в пакетном режиме (то есть при кэшировании данных). При создании объекта Recordset автоматически создается и связанный с ним курсор, обеспечивающий просмотр, редактирование и изменение записей.
8.4.3Объект Command
С помощью объекта Command пользователь может выполнить над данными любую SQL-команду. С ним может быть связан набор объектов Parameter, в котором описываются соответствующие параметры, необходимые для выполнения запроса. Характерной особенностью объекта Command является возможность асинхронного выполнения связанной с ним команды. При обнаружении ошибки с объектом Command связывается своя коллекция объектов Error.
Примечание. Объекту Command соответствуют целых 4 компонента Delphi: TADOCommand, TADOTable, TADOQuery и TADOStoredProc. Сделано это, судя по всему, в целях унификации с компонентами вкладки BDE, хотя возможности TADOCommand во многом подобны возможностям TADOTable, и наоборот.
8.4.4Объект Parameter
Объект Parameter определяет единственный параметр, который будет использоваться при выполнении метода Execute объекта Command. Для этого параметра устанавливается тип, размер и способ применения (входной, выходной, входной и выходной или только для чтения). При необходимости с объектом Command можно связать коллекцию объектов Parameter для указания множества параметров.
8.4.5Объект Error
Коллекция объектов Error хранит все ошибки, связанные с работой остальных объектов, и прежде всего объектов Connection, Command и Recordset.
8.4.6Объект Field
Объект Field хранит всю необходимую информацию об одном поле НД. Поскольку обычно НД содержит несколько полей, с объектом Recordset связана коллекция объектов Field. С любым полем Field можно связать произвольную коллекцию объектов Property, определяющих индивидуальные характеристики поля.
8.4.7Объект Property
Объект Property может быть связан с любым другим объектом ADO, кроме объектов Connection и Error. Он может хранить как статические, так и динамические свойства. Статических (то есть заранее заданных) свойств у объекта всего четыре: Name, Type, Value, Attributes. Остальные свойства динамические и создаются в ходе выполнения программы. В объекте Property задаются некоторые индивидуальные характеристики связанного с ним объекта ADO.
