Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
пояснительная записка (турфирма).docx
Скачиваний:
121
Добавлен:
12.03.2015
Размер:
1.48 Mб
Скачать

1.4.7. Справки по проданным путевкам.

Этот пункт меню дает пользователю возможность узнать различную справочную информацию. Он имеет два подменю: маршруты, купленные на заданный период и самые активные клиенты.

Первый подпункт позволяет выбрать все маршруты, купленные на заданный период. Вкладка с примером выполнения запроса имеет вид:

В текстовых полях необходимо задать месяц и год начала и конца периода. При нажатии кнопки ОК вызывается процедура главной формы и формируется таблица полученных данных.

//процедура главной формы

procedure TForm2.dbedCodeChange(Sender: TObject);

begin

DataModule1.PassClientCode (lcbFio.Text);

end;

//процедура модуля данных

procedure TDataModule1.PassClientCode (FIO:string);

begin

qPassClientCode.Active:=False;

qPassClientCode.ParamByName ('FIO').AsString:=Fio;

DataModule1.qPassClientcode.Active:=True;

end;

Код SQL-запроса:

select clientcode, quantity, pass.departuredate, DURATION, pass.RouteCode

from ROUTE inner join pass on route.ROUTECODE=pass.ROUTECODE

where pass.departuredate between :StartDate and :EndDate

Запрос выполняет поиск маршрутов тех путевок и вывод данных по ним, дата отправления которых лежит в интервале между двумя значениями :startdate и :enddate. Значения этих параметров задаются в приложении в соответствующих полях.

Подпункт меню «Самые активные клиенты» позволяет пользователю ИАС выявить в списке зарегистрированных клиентов тех, которые имеют наибольшую накопленную стоимость купленных путевок за год.

Для определения самого активного клиента требуется ввести год, за который нужно проанализировать данные и нажать кнопку ОК. При нажатии кнопки вызывается процедура главной формы и сведения, возвращенные соответствующим запросом, сформировываются в таблицу.

//процедура главной формы

procedure TForm2.btOkKlientClick(Sender: TObject);

begin

DataModule1.CoolClient(edYearClient.text);

end;

//процедура модуля данных

procedure TDataModule1.CoolClient (year: string);

begin

qCoolClient.Active:=False;

qCoolClient.ParamByName ('Year').AsInteger:=StrToInt(Year);

DataModule1.qCoolClient.Active:=True;

end;

Код SQL-запроса:

select pass.CLIENTCODE, c.Fio, SUM(PROFIT.COST) AS Summa

from CLIENT c inner join PASS on c.CLIENTCODE = pass.CLIENTCODE

join PROFIT on PASS.CODEOFPASS = PROFIT.CODEOFPASS

where extract(year from profit.DATEOFSAIL)=:year

group by pass.CLIENTCODE, c.fio

HAVING (SUM(PROFIT.COST) = (select max(Summa) from

(select pass.CLIENTCODE, SUM(PROFIT.COST) AS Summa

from PASS join PROFIT on PASS.CODEOFPASS = PROFIT.CODEOFPASS

GROUP BY pass.CLIENTCODE) as tmp))

Запрос вывод краткую информацию о кленте (КодКлиента и ФИО), имеющего максимальную накопленную стоимость путевок, а также сумму купленных этим клиентом путевок. При выполнении запроса анализируются данные за один год. Значение переменной :year вводится из приложения. Внешний вид формы с примером выполнения запроса имеет вид:

1.4.8. Общие сведения.

Этот пункт меню предназначен для отображения общей информации по используемым таблицам. Он включает два функциональных раздела: Дорогие и дешевые путевки и Клиенты, не имеющие скидок.

Первый раздел представляет собой совокупность таблицы, поля для выбора страны и двух кнопок, позволяющих выбирать из имеющихся маршрутов дешевые и дорогие. Выбор страны осуществляется из ниспадающего списка. В зависимости от того, какая кнопка будет нажата, инициируется либо процедура выбора дешевых маршрутов, либо процедура выбора дорогих маршрутов. Таблица, в которую выводятся полученные данные, автоматически меняет DataSourse.

//процедура главной формы для выбора дешевых маршрутов

procedure TForm2.Button1Click(Sender: TObject);

begin

DBGrid10.DataSource:= DataModule1.dsourseDeshevie;

DBGrid10.Columns.Items[0].FieldName:='RouteCode';

DBGrid10.Columns.Items[1].FieldName:='Price';

DBGrid10.Columns.Items[0].Title.Caption:='Код маршрута';

DBGrid10.Columns.Items[1].Title.Caption:='Цена';

DataModule1.Deshevie(lcbCountryName.Text);

end;

//процедура главной формы для выбора дорогих путевок

procedure TForm2.Button2Click(Sender: TObject);

begin

DBGrid10.DataSource:= DataModule1.dsourseDorogie;

DBGrid10.Columns.Items[0].FieldName:='RouteCode';

DBGrid10.Columns.Items[1].FieldName:='Price';

DBGrid10.Columns.Items[0].Title.Caption:='Код маршрута';

DBGrid10.Columns.Items[1].Title.Caption:='Цена';

DataModule1.Dorogie(lcbCountryName.Text);

end;

В модуле данных им соответствуют две процедуры:

//на поиск дешевых путевок

procedure TDataModule1.Deshevie(name:string);

begin

qDeshevie.Active:=False;

qDeshevie.ParamByName('Name').AsString:=name;

DataModule1.qDeshevie.Active:=True;

end;

//на поиск дорогих путевок

procedure TDataModule1.Dorogie(name:string);

begin

qDorogie.Active:=False;

qDorogie.ParamByName('Name').AsString:=name;

DataModule1.qDorogie.Active:=True;

end;

Код SQL-запроса на поиск дешевых путевок:

select routecode, price

from ROUTE

where countrycode=

(select countrycode

from country

where name=:name) and

price<(select avg(price) from route

where countrycode=(select countrycode from country where name=:name ))

Код SQL-запроса на поиск дорогих путевок:

select routecode, price

from ROUTE

where countrycode=

(select countrycode

from country

where name=:name) and

price>(select avg(price) from route

where countrycode=(select countrycode from country where name=:name ))

Запрос работает по следующему правилу. Путевка считается дешевой, если ее стоимость ниже средней стоимости всех путевок в данную страну, и дорогой – если ее стоимость превышает среднюю по выбранной стране. Название страны запрос получает из приложения во внутреннюю переменную :name.

Вкладка с выполненным запросом для выбора дешевых путевок имеет вид:

Для выбора дорогих путевок:

В поле Клиенты, не имеющие скидок отображаются Код Клиента и ФИО тех клиентов, сумма скидки которых равна нулю. Таблица активируется при запуске приложения.

Код SQL-запроса:

select clientcode, fio

from CLIENT

where discountsum=0

Запрос выбирает тех клиентов, которые не имеют накопленной скидки.