double arrow

Подключение базы данных к клиентскому приложению


Добавим в проект модуль данных (File\New\Data Module). Модуль данных – это не визуальный контейнер для размещения на нем не визуальных компонентов. Также модуль данных часто используют и для хранения глобальных переменных, общих функций и процедур, которые должны быть видны по всей программе. Модуль данных не имеет формы, но сохраняется как модуль в файле *.pas.

Свойству Name модуля данных мы присвоим имя fDM, а модуль сохраним как DM.pas.

Добавляем в модуль компонент ADOConnection с вкладки ADO. Этот компонент обеспечит связь других компонентов с базой данных при помощи механизма ADO. Связь обеспечивается свойством компонента ConnectionString. В общем-то, у таких компонентов, как ADOTable тоже есть это свойство, однако, имея четыре таблицы, придется четыре раза устанавливать связь. Проще один раз соединиться компонентом ADOConnection и использовать его для связи других компонентов.

Щелкните дважды по свойству ConnectionString компонента ADOConnection. Откроется окно подключения компонента к ADO.

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

Для связи с базой данных MS Access выбираем “Microsoft Jet 4.0 OLE DB Provider”.




Нажимаем на кнопку “Далее”, либо переходим на вкладку “Подключение”. Здесь необходимо выбрать или ввести базу данных. Так как файл с базой данных находится там же, где находится программа, то можно вручную вписать только имя файла с БД, без полного адреса. В этом случае вы сможете перемещать папку с клиентским приложением и базой данных и не нужно будет заново прописывать к ней путь.

Установим свойство LoginPrompt компонента ADOConnection в False. Если этого не сделать, то при каждой попытке соединиться с базой данных будет выходить запрос на пользовательское имя и пароль, нам это не нужно, наша база данных без пароля. Свойство Connected переведите в True. Подключение выполнено.

Установите в модуль данных четыре компонента ADOTable, по одному на каждую таблицу из нашей базы данных. Компонент ADOTable предназначен для создания набора данных.

Выделите все четыре ADOTable (удерживая клавишу <Shift>), и в их свойстве Connection выберите связь ADOConnection1. Таким образом, все четыре ADOTable мы подключили к базе данных.

Выделите первый компонент ADOTable. Переименуйте его свойство Name в TLichData, а в свойстве TableName выберите главную таблицу базы – LichData. Буква “Т” в начале названия компонента укажет нам в дальнейшем, что это таблица. Рядом с компонентом установите компонент DataSource из вкладки Data Access. Компонент DataSource предназначен для организации связи с наборами данных. Свойство Name компонента DataSource переименуйте в DSLichData (DS – DataSource). В свойстве DataSet выберите таблицу TLichData.

То же самое нужно проделать еще три раза, подключая аналогичным образом компоненты DataSource к другим таблицам:



ADOTable: TDoljnost, TTelephones, TAdres

DataSource: DSDoljnost, DSTelephones, DSAdres

Свойство Active таблиц переведите в True, открыв их.

Перейдите на главную форму. Выберите команду File\Use Unit и подключите к ней модуль Data Module (DM). Теперь выберите в компонентах DBGrid в свойстве DataSource необходимые таблицы и вы увидите содержимое этих таблиц.

4. Создание связей между таблицами

Выделите оба компонента DBGrid и установите в True их свойства ReadOnly – только чтение. Таблицы будут связаны и нам не нужно, чтобы пользователь вводил данные отдельно в каждую таблицу. Мы для этого сделаем отдельную форму, а DBGrid будем использовать только для просмотра.

Теперь нужно установить связь между таблицами. Это требуется не только для того, чтобы в нижней сетке выходили данные только на сотрудника, выделенного в верхней сетке, но и для того, чтобы мы смогли в дальнейшем вводить связанные данные в окне редактора.
Выделите модуль данных. Щелкните дважды по первой таблице, чтобы открыть редактор полей. Правой кнопкой щелкните по этому редактору и выберите команду Add all fields (добавить все поля). В окне редактора полей появились все поля таблицы.


Редактор полей предназначен для настройки параметров каждого поля, для добавления новых полей или удаления имеющихся. Если в редакторе полей нет ни одного поля, то в компоненте DBGrid будут отображены все поля таблицы, имеющие параметры по умолчанию. Если же мы добавили в редактор полей хотя бы одно поле, то сетка DBGrid его и отобразит. В редакторе можно для каждого поля изменить различные параметры, например, ширину колонки, название колонки, видимое это поле или нет, и т.п. Кроме того, редактор полей предоставляет возможность добавлять в набор данных новые поля, например вычисляемые или просматриваемые (lookup).
Поле “Ключ” у нас автоинкрементное, предназначено для связи с другими таблицами. Пользователю его видеть не обязательно. Выделите его, и в свойстве Visible установите False.



Теперь для пользователя оно будет невидимым. Здесь у нас есть два логических поля – “Сем_Полож” и “Военнообязанный”. Чтобы True и False выходили на экране так, как нам нужно, свойству DisplayValues первого из этих полей присвойте значение “Женат;Холост”, а второго – “Да;Нет”. Первым здесь идет значение, которое будет обозначать True, вторым – False. Эти значения разделяются точкой с запятой, пробелы не нужны.
Таким же образом добавьте все поля в остальные три таблицы. У них невидимым следует сделать поле “Сотрудник” – этому полю автоматически будет присвоено такое же число, как у поля Ключ соответствующей записи. Логических полей у них нет. Однако для поля “Телефон” таблицы Telephones следует изменить свойство EditMask. Щелкните по нему дважды, открыв редактор маски, и в поле Input Mask введите маску “#(###)-###-##-##”. Сохраните ее, нажав кнопку ОК. Для полей типа Дата в этом свойстве (в таблице LichData два таких поля) введите маску “##.##.####”.
Теперь создадим связи между таблицами.

При помощи кнопки F12 перейдите в редактор кода. В нижней части окна вы увидите вкладку Diagram, перейдите на нее.


Для начала в окно диаграмм нужно добавить наши таблицы. Найдите их в окне дерева объектов Object TreeView. Если у вас это окно закрыто, откройте его клавишами Shift+Alt+F11 либо командой меню View\Object TreeView. Ухватитесь в этом окне мышью за название главной таблицы LichData и перетащите ее в окно диаграмм. Таблица вместе с полями отобразится в окне. Если бы ранее мы не добавили все поля в окне редактора полей компонента ADOTable, то здесь мы не увидели бы полей. Точно также перетащите остальные таблицы. Связи главная – подчиненная делают кнопкой Master/Detail Connector, которую вы можете увидеть в верхней части окна диаграмм (предпоследняя). Нажмите на кнопку, затем подведите указатель мыши к боковой границе главной таблицы, нажмите левую кнопку и, удерживая ее, проведите линию к боковой границе таблицы Adres. Как только вы отпустите кнопку, появится окно связей.
Здесь в поле Detail Fields нужно выбрать поле, по которому будет осуществляться связь, в нашем случае это поле “Сотрудник”. В поле Master Fields выбираем ключевое поле “Ключ”. Затем нажимаем кнопку Add и кнопку OK. Связь установлена.
При установке связей главный/подчиненный важно начинать вести линию с главной таблицы к подчиненной. Если бы мы сделали иначе, то главной таблицей стала бы TAdres. Такую же связь установите и с остальными таблицами.


Сохраните проект и запустите его на выполнение. Если в сетках главного окна вы видите открытые таблицы, то все хорошо. Если нет, возможно, при изменении настроек ваши таблицы закрылись. В таком случае закройте программу, выделите таблицы, и их свойству Active снова присвойте значение True. Таблицы должны появиться в сетках главного окна, даже на этапе проектирования.







Сейчас читают про: