- •Отчет по учебной практике по дисциплине Прикладное программирование (часть 2)
- •Создание клиентской части приложения для просмотра, редактирования данных бд. Вызов хранимых процедур
- •Создание клиентского приложения
- •Подключение базы данных
- •Создание главной формы
- •Создание формы с информацией об авторах
- •Создание формы с информацией о книгах
- •Создание формы с информацией об изданиях
- •Создание формы с информацией о поставках
- •Создание формы с информацией о поставщиках
- •Форма для выполнения процедуры
- •Создание административной страницы
- •Вкладка «Работа с визуальными компонентами»
- •Вкладка «Просмотр записей»
- •Вкладка «Связи»
- •Вкладка «Вычисляемое поле»
- •Вкладка «Сортировка»
- •Вкладка «Фильтр»
- •Вкладка «Поиск»
- •Вкладка «Запросы»
- •Вкладка «Отчеты»
- •Создание клиентского приложения для базы данных «прием цветов в магазин»
- •Разработка клиентского приложения
- •Создание контейнера для связи с базой данных
- •Главная форма
- •Форма Цветы
- •Форма Поставщики
- •Форма Поступления
- •Форма Запросы
- •Форма для отображения записей
- •Форма Связи
- •Вкладка «Отчеты»
Вкладка «Отчеты»
Создадим отчет «Прайс-лист видео-проката» в среде Rave Reports. Для этого добавим на вкладку компоненты работы с отчетами : RvDataSetConnection1, RvSystem1, RvProject1. RvDataSetConnection1 свяжем с нужной таблицей, RvProject1 с RvSystem1. С помощью RvProject1 создадим новый проект в Rave Reports. Добавим нужные поля и внесем в отчет. Для его открытия создадим кнопку «Открыть отчет» со следующим обработчиком:
RvProject1->Execute();
Созданный отчет выглядит следующим образом (см. рис.2.16).
Рисунок 2.25 – Отчет «Прайс-лист»
Создание клиентского приложения для базы данных «прием цветов в магазин»
Цель работы – научиться создавать клиентское приложение для работы с базой данных с применением встроенных инструментов в среде Builder C++.
Разработка клиентского приложения
Создание контейнера для связи с базой данных
Для создания клиентского приложения используем пример базы данных c названием «Прием цветов в магазин». На форму DM добавим компонент ADOConnection, 3 компонента типа ADOTable , 4 компонентов типа DataSource и один компонент типа ADOQuery. Настроим нужные свойства у компонентов. Свяжем ADOConnection с базой данных все компоненты типа ADOTable свяжем с ADOConnection. Вид формы DM (см. рис. 3.1).
Рисунок 3.26 – Вид контейнера для связи с базой данных
Главная форма
Добавим на текущую форму главное меню (см. рис. 3.2), с разделом «Просмотр данных», имеющим следующие пункты:
О цветах
О поставщиках
О поставках
Запросы
Форма для просмотра записей
Связи
Отчеты
Рисунок 3.27 – Пункты главного меню
Для открытия подчиненных форм добавим в обработчик события к каждому пункту следующие строки:
Пункт «О цветах».
TForm3 *Form3= new TForm3(Application);
Form3->Show() ;
Пункт «О поставщиках».
TForm4 *Form4= new TForm4(Application);
Form4->Show() ;
Пункт «О поставках».
TForm5 *Form5= new TForm5(Application); Form5->Show() ;
Пункт «Запросы».
TForm6 *Form6= new TForm6(Application);
Form6->Show() ;
Пункт «Форма для просмотра записей».
TForm7 *Form7= new TForm7(Application);
Form7->Show() ;
Пункт «Связи».
TForm8 *Form8= new TForm8(Application);
Form8->Show() ;
Пункт «Отчеты».
TForm9 *Form9= new TForm9(Application);
Form9->Show() ;
Форма Цветы
Добавим на форму DBGrid и DBNavigator, для отображения записей и навигации по ним. Для удобного просмотра разработаем на форме сортировку, фильтр и поиск по записям. Вид формы (см. рис. 3.3).
Рисунок 3.28 – Вид формы Цветы
Программный код для выполнения сортировки:
AnsiString s= ComboBox1->Items->Strings[ComboBox1->ItemIndex];
if(f==0) DM->AT1->IndexFieldNames=s+" DESC";
else DM->AT1->IndexFieldNames=s+" ASC";
Программный код для выполнения фильтра:
int f=RadioGroup2->ItemIndex;
DM->AT1->Filtered= false;
switch (f) {
case 0 : { AnsiString a="Название";
DM->AT1->Filter = a+ "='" +
DBGrid1->Columns->Items[1] ->Field->Text+"'";
DM->AT1->Filtered= true;
break; }
case 1 : { AnsiString a="Сорт";
DM->AT1->Filter = a+ "='" +
DBGrid1->Columns->Items[2] ->Field->Text+"'";
DM->AT1->Filtered= true;
break; }
case 2 : { AnsiString a="Тип_листа";
DM->AT1->Filter = a+ "='" +
DBGrid1->Columns->Items[4] ->Field->Text+"'";
DM->AT1->Filtered= true;
break; }
case 3 : { AnsiString a="Цветущий";
DM->AT1->Filter = a+ "='" +
DBGrid1->Columns->Items[5] ->Field->Text+"'";
DM->AT1->Filtered= true;
break;
}
}
Программный код для выполнения поиска:
int f=RadioGroup3->ItemIndex;
if (Edit1->Text!="") {
switch(f)
{
case 0: { TLocateOptions Opts;
Opts << loPartialKey<<loCaseInsensitive;
DM->AT1->Locate( "Код_цветка",Edit1->Text,Opts);
break; }
case 1: { TLocateOptions Opts;
Opts << loPartialKey<<loCaseInsensitive;
DM->AT1->Locate( "Название",Edit1->Text,Opts);
break; }
} }
