Хелпикс

Главная

Контакты

Случайная статья





й Вариант. й Вариант. Формирование суммы



 

Лабораторная работа № 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;)

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



  

© helpiks.su При использовании или копировании материалов прямая ссылка на сайт обязательна.