Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Курсовая / Lab_3_4_sortirovka_vych_p

.doc
Скачиваний:
6
Добавлен:
19.02.2016
Размер:
55.81 Кб
Скачать

Лабораторная работа № 3.4

Сортировка по определенным полям и вычисляемые поля.

Для выполнения данной лабораторной работы вам понадобятся база, созданная в л.р. № 3.2. и проект, созданный в л.р. № 3.3. Откройте проект л.р. № 3.3 и на главную форму добавте компоненты RadioGroup и 2 компоненты RadioButton с панели Standard.

Переименуйте компоненту RadioGroup в rgSort , RadioButton1 в rbPrice, RadioButton2 в rbKol. В свойстве Caption для RadioGroup укажите «Сортировка по», RadioButton1 - Цена, RadioButton2 - Количество.

Для rbPrice (RadioButton1) свойство Checked в true. В событиях Events для rbPrice в OnClick щелкнуть 2 раза и и в обработчик прописать функцию:

1-й Вариант

//---------------------------------------------------------------------------

void __fastcall TForm1::rbPriceClick(TObject *Sender)

{

if(rbPrice->Checked)

{qrTovar->Sort="price ASC"; qrTovar->Active=true;}

if(rbKol->Checked)

{qrTovar->Sort="kolichestvo DESC"; qrTovar->Active=true;}

}

//---------------------------------------------------------------------------

Для rbPrice в событиях Events прописать rbPriceClick.*

* Примечание: При нажатии в процессе выполнения программы на кнопку rbPrice будет вызываться обработчик события rbPriceClick.

Для основной формы в событиях Events OnActivate щелкнуть 2 раза и в обработчик прописать функцию:

//---------------------------------------------------------------------------

void __fastcall TForm1::FormActivate(TObject *Sender)

{

rbPriceClick(this);

}

//---------------------------------------------------------------------------

Листинг программы:

#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::FormActivate(TObject *Sender)

{

rbPriceClick(this);

}

//---------------------------------------------------------------------------

void __fastcall TForm1::qrTovarCalcFields(TDataSet *DataSet)

{

qrTovarSuma->Value = qrTovarkolichestvo->Value * qrTovarprice->Value;

}

//---------------------------------------------------------------------------

void __fastcall TForm1::cbOtdCloseUp(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();

}

//---------------------------------------------------------------------------

void __fastcall TForm1::rbPriceClick(TObject *Sender)

{

if(rbPrice->Checked)

{qrTovar->Sort="price ASC"; qrTovar->Active=true;}

if(rbKol->Checked)

{qrTovar->Sort="kolichestvo DESC"; qrTovar->Active=true;}

}

//---------------------------------------------------------------------------

2-й Вариант

Необходимо в функции rbPriceClick (вместо существующего текста) сформировать SQL-запрос для qrTovar, в котором в зависимости от поля сортировки (rbPrice->Checked или rbKol->Checked), должна быть реализована выборка с соответствующей сортировкой и установить qrTovar->Active=true;

Формирование суммы

Необходимо создать под столбцом «Количество» - TLabel (lbSum), в свойство Caption которого мы будем записывать сумму этого поля (с учетом фильтра). Для этого надо на форму добавить ещё одну компоненту TADOQuery (qrT), связать его с ADOConnection1, функции cbOtdCloseUp() и cbPostCloseUp() надо дополнить, т.е. сформировать для него соответствующие SQL-запросы (qrT->SQL->Add(“…”);) и после выполнения этих запросов (qrT->Active=true;) – записать результат в наш TLabel.

( lbSum->Caption = qrT->Fields->Fields[0]->AsString;)

Необходимо учесть – как будет считаться сумма, пока не произошел выбор фильтра.

Соседние файлы в папке Курсовая