Часть 3 – Создание статических столбцов в компоненте DBGrid , подстановочных полей в подчиненной таблице, полей с фиксированным списком данных



Рекомендации по созданию приложения БД

Тема : Создание в программе Embarcadero RAD Studio (C++Builder) клиентского приложения по технологии ADO для СУБД MS Access.

Цель : Получить практические навыки работы c базами данных в среде для быстрой разработки приложений на C++.

ТЕОРЕТИЧЕСКИЕ СВЕДЕНИЯ

См. Электронный учебник А. Хомоненко, С. Ададурова «Работа с базами данных в C++Builder» (файлы  DataBase v C++Builder.djvu в папке с заданием на курсовой проект, стр. 263-286 и ЛР Программирование на С++ Builder 2010. pdf стр. 96-108).

 

Пример разработки приложения рассмотрим на примере следующей базы данных Student.mdb:

Часть 1 – Создание соединения с БД, размещение компонентов доступа к данным (набора данных), компонентов источников данных

1. Запустить программную среду CodeGear RAD Studio (C++Builder).

2. Создать новый проект VCL Form Application – C++Builder.

3. Вывести для удобства работы на экран Object Inspector и Tool Palett (пунктменю View).

4. Добавить в проект модуль данных (File ® New ® Other … или  New Items).

Рис. 1. Окно добавления в проект модуля данных

5. Расположить на модуле данных с Палитры компонентов dbGo и DataAccess необходимые компоненты: для соединения и доступа к данным (набор данных) (компонент ADOTable), источники данных (компонент DataSourse) и переименовать их согласно с названиями таблиц личной базы данных студента (свойство name в Object Inspector).

ЗАМЕЧАНИЕ: Набор данных представляет собой совокупность записей, взятых из одной или нескольких таблиц БД. Компонент ADOTable – универсальный способ подключения к базам данных, – предназначен для редактирования набора данных.

Источник данных (компонент DataSourse) используется как промежуточное звено между набором данных и визуальными компонентами, с помощью которых пользователь управляет этим набором данных. Для указания набора данных, с которым связан источник данных, служит свойство DataSet последнего. Визуальные компоненты связаны с источником данных через свои свойства DataSourse.

6. Настроить компоненты ADOTable на соединение с базой данных и соответствующими таблицами в свойствах ConnectionString и TableName , а также включить активность. Файл базы данных поместить в папку Win32 папки Debug проекта.

7. Компоненты DataSource связать с компонентами ADOTable , выбрав соответствующие значения в свойстве DataSet.

8. Переименовать модуль данных, например, задав имя DM (свойство name в ObjectInspector).

 

Часть 2 – Создание формы приложения БД, размещение и настройка компонентов управления данными

 

9. Подключить в форму модуль данных: #include "имя заголовочного файла".

Выполнить, например, команду File / Use Unit

ЗАМЕЧАНИЕ: для перехода между файлами проекта использовать кнопки панели инструментов Стандартная  или соответствующие пункты меню View.

 

10. Переименовать главную форму клиентского приложения (свойство Caption), задав ей соответствующее имя, например, Деканат.

11. Расположить на форме компонент MainMenu (вкладка Standart на палитре компонентов) для создания меню формы.

12. Задать пункты верхнего меню и подпункты. Справочниками будут выступать родительские таблицы (Рис. 6).

Рис. 6. Пункты верхнего меню для Деканата

13. Расположить на форме компонент Image (вкладка Additional), указать имя файла рисунка (свойство Picture), предварительно рисунок скопировать в папку с проектом, задать ему выравнивание (свойство Align установить в alClient), растяжение (свойство Strech установить в true).

14. Расположить на форме компонент PageControl (вкладка Win32) для создания вкладок, которые будут содержать данные таблиц БД. Задать объекту выравнивание по полному размеру формы (свойство Align установить в alClient).

15. Создать вкладки по количеству таблиц, задать вкладкам имена (свойство Caption), соответствующие таблицам БД: например, для Деканата – Студенты и Экзамены.

ЗАМЕЧАНИЕ: для создания вкладок достаточно вызвать контекстное меню.

   

Рис. 7. Пример создания вкладок

16. Задать жесткое разграничение рабочего поля на каждой вкладке главного окна формы, используя компоненты Panel (вкладка Standart) и Splitter (вкладка Additional).

ЗАМЕЧАНИЕ: рекомендуется выполнить следующие действия.

1) активизировать любую из вкладок (объекты TabSheet1-3);

2) добавить компонент Panel;

3) задать выравнивание вверху вкладки (свойство Align установить в alTop);

4) изменить вручную или с помощью свойств его высоту – высота объекта порядка 2/3 от высоты вкладки (Рис. 8 слева);

5) выбрать компонент Splitter и щелкнуть на вкладке ниже панели –объект разместится вертикально (Рис. 8 справа);

Рис. 8. Создание фиксированных областей на вкладке – этап 1

6) задать объекту Splitter1 выравнивание вверху свободной области на вкладке (свойство Align установить в alTop), толщину 1-2 (свойство Height) (Рис. 9 слева);

7) расположить ниже объекта Splitter1 еще один компонент Panel и задать ему выравнивание по размеру свободной области на вкладке (свойство Align установить в alClient) (рис. 9 справа);  

Рис. 9. Создание фиксированных областей на вкладке – этап 2

8) выполнить аналогичные действия для остальных вкладок.

 

17. Для вывода содержимого таблиц БД расположить вверху (верхняя панель) на каждой вкладке компонент DBGrid (вкладка DataControls) и задать его выравнивание вверху панели (свойство Align установить в alTop), увеличить высоту объекта (3/4 высоты панели) (Рис. 10 слева).

ЗАМЕЧАНИЕ:

Визуальные компоненты для работы с данными расположены на странице DataControls Палитры компонентов и предназначены для построения интерфейсной части приложения. Они используются для навигации по набору данных, а также для отображения и редактирования записей. Свойство DataSource задает имя источника данных, который подключен к одному из наборов данных приложения.

Для отображения записей редактируемого набора данных и навигации по нему используются объекты DBGrid и DBNavigator соответственно. Для установления связи названных компонентов с компонентами ADOTable используется компоненты DataSource. Для компонентов DataSource их свойствам DataSet устанавливается значение нужного ADOTable ... Соответственно для каждого из компонентов DBGrid1 и DBNavigator1 их свойству задается значение соответствующего DataSource.

 

18. Добавить на каждую вкладку компонент DBNavigator (вкладка DataControls) и расположить его на верхней панели каждой вкладки под объектом DBGrid (Рис. 10 слева).

ЗАМЕЧАНИЕ: Навигатор используется для управления набором данных и обеспечивает соответствующий интерфейс пользователя.

 

Рис. 10.

19. Настроить каждый объект DBGrid на отображение данных из соответствующих таблиц, выбрав нужное в свойстве DataSource (Рис. 10 справа).

20. Настроить каждый объект DBNavigator на соответствующий объект DBGrid, выбрав нужное в свойстве DataSource (Рис. 10 справа).

21. Запустить программу на выполнение.

ЗАМЕЧАНИЕ: пункты верхнего меню еще не подключены – доступа к таблицам нет, на форме расположен фоновый рисунок. Попробуйте изменить данные, используя доступ к таблицам и навигатор. Закрыть окно приложения.

22. Прописать обработчик события OnCreate при запуске клиентского приложения (т.е. создании формы) так, чтобы соединение с БД было выключено, активизирован фоновый рисунок и скрыта панель с вкладками окна приложения.

ЗАМЕЧАНИЕ: следует выполнить следующие действия

1) активизировать объект форму, щелкнув по заголовку или выбрав в списке

2) перейти на вкладку Events (события) в ObjectInspector и выбрать событие OnCreate , создать обработчик события, содержащий команды:

 

PageControl1->Visible=false;

Image1->Visible=true;

3) На модуле данных также закрыть соединение таблицами базы данных (свойство Active  компонентов ADOTable … установить вfalse).

 

23. Задать соответствующие обработчики события OnClick при выборе пунктов и подпунктов верхнего меню.

ЗАМЕЧАНИЕ:

Для пункта меню ПОДКЛЮЧИТЬ БАЗУ.

1) вызвать для редактирования расположенный на форме объект MainMenu1;

2) выбрать пункт Подключить базу;

3) создать для события OnClick обработчик события, содержащий команды (ниже приведены команды для Деканата):

DM->ADOTableStudentu->Active=true;

//Аналогично для другой таблицы

Для пункта меню ВЫХОД.

1) выбрать пункт Выход;

2) создать для события OnClick обработчик события, содержащий команды:

DM->ADOTableStudentu->Active=false;

//Аналогично для другой таблицы

Form1->Close();

Для пункта меню активизации вкладки на форме.

1) выбрать пункт с названием вкладки;

2) учитывая, что каждая вкладка нумеруется от 0 и далее, записать команды вида:

Image1->Visible=false;

PageControl1->Visible= true;

PageControl1->ActivePageIndex=0; //указать нужный индекс вкладки

24. Запустить программу на выполнение и проверить работу запрограммированных пунктов верхнего меню.

25. Запустить приложение и внести изменения в таблицы с помощью инструментов навигационной панели : вставки новой записи, удаления, обновления данных. Закрыть окно приложения.

 

Часть 3 – Создание статических столбцов в компоненте DBGrid , подстановочных полей в подчиненной таблице, полей с фиксированным списком данных

 

26. Создать статические столбцы для полей сеток DBGrid на форме приложения.

ЗАМЕЧАНИЕ: Сетка отображает все данные, имеющиеся в наборе данных.

По умолчанию для каждого поля набора данных, связанного с компонентом DBGrid, автоматически создается отдельный столбец, и все столбцы в сетке доступны. Такие столбцы называются динамическими. Для создания статических столбцов используется специальный Редактор столбцов. Достоинствами статических столбцов является то, что для их объектов можно установить значения свойств, отличные от свойств соответствующего поля и не зависящие от него. Например, если для некоторого статического столбца установить свое имя, то оно не будет меняться даже в случае, если с этим столбцом связывается другое поле набора данных (т.е. создание подстановки для внешних полей).

Первоначально список статических столбцов пуст, т.е. все столбцы являются динамическими. Редактор столбцов позволяет: создать статический столбец, удалить, изменить порядок следования столбцов.

 

Для создания списка статических столбцов следует выполнить для компонента SimpleDataSet следующие действия:

1) На модуле данных щелкнуть два раза на значке компонента ADOTable …, связанного с соответствующей таблицей, вызвав Редактор столбцов;

2) В Редакторе столбцов вызвать контекстное меню и выбрать пункт  (Добавить все столбцы);

Рис. 11. Список статических столбцов для Деканата

 

27. Создать подстановочные статические столбцы для полей сетки DBGrid для набора данных, связанного с подчиненной таблицей для отображения в подчиненной таблице содержимого полей главных таблиц с выпадающим списком значений.

ЗАМЕЧАНИЕ: выполнить следующие действия:

1) Вызвать контекстное меню в Редакторе столбцов для компонента ADOTable, связанного с подчиненной таблицей в БД (например, для В30 – ADOTableEkzamenu) и выбрать  (Добавить новое поле);

2) Для создания подстановочного поля, содержащего выпадающий список значений поля связанной по внешнему ключу главной таблицы (например, для Деканата – поле FamStud в таблице Экзамены, содержащее значение поля Номер зачетки главной таблицы Студенты, связь по ключу Номер зачетки) в появившемся окне выбрать:

Рис. 12. Создание постановочного поля FamStud в таблице Экзамены

 

При желании можно создать несколько подстановочных полей для вывода данных из главных таблиц.

 

28. Настроить поля сетки на отображение данных из связанных наборов данных: вывод русских названий столбцов таблиц, подстановочных столбцов.

ЗАМЕЧАНИЕ: выполнить следующие действия:

1) Дважды щелкнуть на форме на компоненте DBGrid, связанном с одним из наборов данных (или вызвать контекстное меню на компоненте, выбрать Columns Editor…);

2) В появившемся окне выбрать Add all fields;

3) Поочередно выбирая названия полей сетки в Object Inspector, изменять соответствующее значение в свойстве Caption в списке Title с английского на русский (рис. 14), если нужно.

Рис. 14. Изменение названий полей сетки (пример для В30)

4) Аналогичным образом изменить все имена полей всех сеток.

 

При желании можно удалить из списка полей сетки определенные поля, учитывая, что поле должно быть Null (не обязательным для заполнения) или внешним ключом, если создано соответствующее подстановочное поле.

Также можно переместить поля в списке.

29. Запустить приложение на выполнение, проверить работу подстановочных столбцов в подчиненной таблице.

30. Создать для отдельных полей сетки выпадающий список с фиксированным списком данных.

ЗАМЕЧАНИЕ: выполнить следующие действия:

1) Выбрать сетку, связанную с нужным набором данных, например, для Деканата – с таблицей Студенты;

2) Выбрать нужное поле (например, для Деканата поле Факультет);

3) Выбрать свойство PinkList (свойство PinkList представляет собой список для выбора заносимых в поле значений) и ввести нужные значения (рис. 16).

В отличие от подстановочного поля, для заполненных записей не происходит автоматическое обновление при внесении изменений в существующий список.

Если необходимо ограничиться только списком, следует установить свойству ReadOnly значение True .

 

 


Дата добавления: 2019-01-14; просмотров: 354; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!