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

1.4.3. Справочники.

Данное меню позволяет пользователю просматривать и редактировать основные таблицы базы данных.

Загрузка таблиц происходит сразу после успешного соединения с базой данных с помощью процедуры AfterConnect модуля данных.

procedure TDataModule1.IBDatabase1AfterConnect (Sender: TObject);

begin

dsRoute.Active := True;

dsClient.Active := True;

dsPass.Active := True;

dsCountry.Active:=True;

dsProfit.Active:=True;

qSumDiscount.Active:=true;

dsHotel.Active:=True;

end;

Каждой таблице главного окна соответствует два компонента в DataModule’е:

TIBDataSet – служит для непосредственного хранения данных, взятых их таблиц базы данных;

TDataSource – служит для обеспечения связи наборов данных с визуальными компонентами Delphi;

Для управления записями в таблицах на форме присутствует компонент TDBNavigator. Он позволяет добавлять, удалять или изменять записи в таблицах, а также перемещаться по записям.

Для обеспечения этих функций со стороны базы данных для каждого набора данных были написаны запросы на поддержание целостности базы данных (тесты запросов см. Приложение).

На вкладке «Справочник стран» предусмотрена такая функция как расчет средней стоимости маршрута в выбранную страну. Для этого из главной формы вызывается процедура модуля данных SrCost.

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

procedure TForm2.dbedSrCostChange(Sender: TObject);

begin

DataModule1.SrCost(lcbCountry.text);

end;

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

procedure TDataModule1.SrCost(countryname:string);

begin

qSrCost.Active:=False;

qSrCost.ParamByName ('CountryName').AsString:=countryname;

DataModule1.qSrCost.Active:=True;

end;

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

select avg(PRICE)

from ROUTE inner join Country on route.countrycode=country.countrycode

whereName=:CountryName

Результат выполнения запроса:

1.4.4. Регистрация новой путевки.

Данный пункт меню позволяет удобным для пользователя образом добавлять сведения о новой проданной путевке.

Как видно на скриншоте, этот пункт позволяет добавлять все поля в таблицу Pass. При этом выбор клиента и номера маршрута производится из ниспадающих списков, которые берут данные соответственно из таблиц Client и Route. Для исключения ошибки выбора по ФИО при наличии в базе данных двух клиентов с абсолютно идентичными именами в специальное поле выводится код выбранного клиента.

Код SQL-запроса для вывода кода клиента по ФИО:

select clientcode

from CLIENT

where fio=:fio

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

procedureTForm2.DBNavigator5Click(Sender:TObject;Button:TNavigateBtn);

begin

DataModule1.PassDiscount(lcbFio.text);

DataModule1.PassCost(lcbFio.text);

end;

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

procedure TDataModule1.PassDiscount (fio:string);

begin

qPassDiscount.Active:=False;

qPassDiscount.ParamByName ('fio').AsString:=fio;

DataModule1.qPassDiscount.Active:=True;

end;

procedure TDataModule1.PassCost (FIO:string);

begin

qPassCost.Active:=False;

qPassCost.ParamByName ('Fio').AsString:=Fio;

DataModule1.qPassCost.Active:=True;

end;

Код SQL-запроса для вывода размера скидки на путевку:

select discount

from PASS join profit on pass.codeofpass=profit.codeofpass

where clientcode in (select clientcode from client where fio=:fio)

anddateofsail=current_date

Код SQL-запроса для вывода стоимости путевки:

select cost

from PROFIT join pass on profit.CODEOFPASS=pass.CODEOFPASS

where dateofsail=current_date and

clientcode in (select clientcode from client where fio=:fio)

Результат выполнения: