
Курсовая / Lab_3_5_filtratsia
.doc
Лабораторная работа № 3.5.
Тема: Фильтрация данных по двум полям при помощи использования компонент DBLookupComboBox, ADOQuery , DataSource
1. Данная лабораторная работа выполняется на базе лабораторной работы № 3.4. Использую программу Navicat, заполните позиции: отдел, вид, поставщик, наименование товара не менее чем для 15 строк. Запустите С++Builder и откройте готовое приложение из лабораторной работы № 3.4. Откомпилируйте его и заполните 15 строк. Значения Отдел, Вид, Поставщик, Наименование товар выбираем из выпадающего меню, а Цена, Кол-во проставляем сами. Таблица будет иметь следующий вид:
2. С помощью компонент Label из закладки Standard и DBLookupComboBox из закладки Data Controls готовим інтерфейс для нашей формы как показано на рисунке ниже. Мы будем фильтровать данные нашей базы п Переменные для компонент DBLookupComboBox1 и DBLookupComboBox2 назовем cbOtd и cbPost соответственно.
о двум параметрам: по отделу и поставщику.
4. Для установления связи DBLookupComboBox с нашей базой данных наносим на форму по две компоненты ADOQuery из заклкадки ADO и DataSource из закладки DataAccess. Одна пара компонент для связи с полем Отдел, вторая – Поставщик.
Назовем их qrOtd и qrPost drOtd, drPost компонент ADOQuery и drOtd, drPost для DataSource соответственно. Для DataSource в свойстве DataSet устанавливаем тоже соответственно qrOtd и qrPost .
5. В окне Object Inspector для ADOQuery устанавливаем значение Connection. Двойным нажатием на свойство SQL, вызываем окно String List Editor и прописываем связи. Для qrOtd select * from otdel и для qrPost select * from postavshik
6. С помощью двойного нажатия мышью на наши компоненты ADOQuery вызываем окно Form1. На нем нажимаем правой кнопкой мышки и выбираем позицию Add all fields. В Object Inspector свойство Active устанавливаем в true. Проделываем эту операцию для qrOtd и qrPost.
7. Теперь для компонент DBLookupComboBox1 и DBLookupComboBox2 в окне Object Inspector устанавливаем свойства, показанные на рисунке ниже. (Соответственно для Отдела и Поставщика)
8. Для этих же компонент в окне Object Inspector переходим на закладку Events, выбираем OnCloseUp, делаем двойной щелчок мышкой и в появившемся окне пишем программу для выполнения нашего задания – фильтрации данный по двум полям: Отделу и Поставщику.
9. Программа будет иметь следующий вид:
#include <vcl.h>
#pragma hdrstop
#include "Main.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::qrTovarCalcFields(TDataSet *DataSet)
{
qrTovarSuma->Value = qrTovarkolichestvo->Value * qrTovarprice->Value;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::cbOtdelCloseUp(TObject *Sender)
{
String S;
if(cbPost->Text=="") S="";
else S=" and id_postav="+qrPostid_postavshik->AsString;
qrTovar->SQL->Clear();
qrTovar->SQL->Add("select * from tovar where id_otdel ="+qrOtdid_otdel->AsString + S);
qrTovar->Open();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::cbPostCloseUp(TObject *Sender)
{
String S;
if(cbPost->Text=="") S="";
else S=" and id_otdel="+qrOtdid_otdel->AsString;
qrTovar->SQL->Clear();
qrTovar->SQL->Add("select * from tovar where id_postav="+qrPostid_postavshik->AsString+S);
qrTovar->Open();
}
//---------------------------------------------------------------------------
10. Компилируем наше приложение, устраняем ошибки и запускаем нашу программу на выполнение. Приложение готово.