
- •Лабораторная работа № 3
- •Теоретические сведения
- •Порядок выполнения
- •Часть 1 – Создание соединения с сервером бд, размещение компонентов доступа к данным (набора данных), компонентов источников данных
- •Часть 2 – Создание формы приложения бд, размещение и настройка компонентов управления данными
- •Часть 3 – Создание статических столбцов в компоненте dbGrid, подстановочных полей в подчиненной таблице, полей с фиксированным списком данных
- •Часть 4 – Организация поиска, упорядочивание данных в таблицах
- •Часть 5 – Создание расчетных полей в сетках, связанных с наборами данных
- •Отчет должен содержать:
Часть 4 – Организация поиска, упорядочивание данных в таблицах
Расположить в нижней части на вкладках формы компоненты для сортировки: выбор имени поля в наборе данных, направление сортировки, кнопку запуска (рис. 17).
Рис. 17. Пример области сортировки для таблицы Dogovors
ЗАМЕЧАНИЕ: выполнить следующие действия:
Расположить на нужной вкладке два компонента RadioGroup с вкладки Standart. Выбрать вкладку, связанную с нужным набором данных, например,– с таблицей Dogovors и настроить компонент на заданный набор;
Задать компонентам соответствующее свойство Caption (рис. 17);
Для каждого компонента в свойстве Items заполнить соответственно имена полей для сортировки и направление сортировки (рис. 17);
Установить первый элемент переключателя активным, установив для свойства ItemIndex значение 0;
Добавить на вкладку управляющую кнопку: компонент Button с вкладки Standart, изменить свойство Caption;
Прописать соответствующий обработчик события OnClick для кнопки.
Пример для таблицы Dogovors:
//----------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
AnsiString d;
switch (RadioGroup2->ItemIndex) { //выбор направления сортировки
case 0: d=""; break; // по возрастанию
case 1: d="DESC"; // по убыванию
}
switch (RadioGroup1->ItemIndex) { //выбор поля для сортировки
case 0: d=" order by dnomerdogov " + d; break;
case 1: d=" order by ddata " + d; break;
case 2: d=" order by DStrahSymma " + d; break;
case 3: d=" order by DTarifStavka " + d; break;
}
DM->SimpleDogovors->DataSet->CommandText="select * from dogovors "+d;
DM->SimpleDogovors->Refresh(); //обновление набора данных
}
Аналогичным образом создать область сортировки на остальных вкладках.
Расположить в нижней части на вкладках формы компоненты для поиска по определенным полям: выбор имени поля в наборе данных, ввод текста для поиска, кнопку запуска, кнопку сброса (рис. 18).
Рис. 18. Пример области поиска для таблицы Filials
ЗАМЕЧАНИЕ: выполнить следующие действия:
Расположить на нужной вкладке компонент ComboBox с вкладки Standart. Выбрать вкладку, связанную с нужным набором данных, например – с таблицей Filials и настроить компонент на заданный набор;
Для компонента в свойстве Items заполнить соответственно имена полей для поиска в данном наборе данных;
Установить первый элемент выпадающего списка активным, задав для свойства ItemIndex значение 0 (или оставить начальное значение списка пустым, очистив свойство Text (рис. 18);
Добавить на вкладку управляющие кнопки: компоненты Button с вкладки Standart, изменить свойство Caption (рис. 18);
Добавить на вкладку компонент Edit с вкладки Standart, очистить свойство Text;
Добавить на вкладку 2 компонента Lable с вкладки Standart, изменить свойство Caption (рис. 18);
Прописать соответствующий обработчик события OnClick для кнопки Поиск, учитывая, что текстом поиска может служить фрагмент (буква) значения поля.
Пример для таблицы Filials:
//----------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
AnsiString d1,s;
switch (ComboBox1->ItemIndex) { //выбор имени поля в списке
case 0: d1="FNameFiliala"; break;
case 1: d1="FAdres"; break;
case 2: d1="FTelefon"; break;
}
s=Edit1->Text; //присвоение переменной значения из поля Edit1
DM->SimpleFilials->DataSet->CommandText="select * from filials where "+d1+" like '%"+s+"%'";
DM->SimpleFilials->Refresh();
}
Прописать соответствующий обработчик события OnClick для кнопки Сброс.
Пример для таблицы Filials:
//----------------------------------------------------------------------
void __fastcall TForm1::Button3Click(TObject *Sender)
{
DM->SimpleFilials->DataSet->CommandText="select * from filials order by FKodFiliala"; //сортировка набора данных по ключевому полю
DM->SimpleFilials->Refresh(); //обновление набора данных
Edit1->Text=""; //очистка поля поиска
}
Аналогичным образом создать область поиска на остальных вкладках.
Запустить приложение на выполнение, проверить работу областей поиска и сортировки на вкладках.