Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Работа.doc
Скачиваний:
4
Добавлен:
16.04.2019
Размер:
1.46 Mб
Скачать

3.2. Запросы

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

Запрос «График техосмотров» определяет для каждой машины срок очередного техосмотра (на основании данных о периодичности техосмотров для данной марки) и располагает полученные записи в хронологическом порядке очередных техосмотров. Текст запроса на языке SQL:

SELECT Автомобиль.ГосНомер, Марка.Марка, Автомобиль.Год, Автомобиль.Техосмотр, Автомобиль!Техосмотр+Марка!ПериодТО AS [Следующий техосмотр]

FROM Марка INNER JOIN Автомобиль ON Марка.КодМарки = Автомобиль.Марка

ORDER BY Автомобиль!Техосмотр+Марка!ПериодТО;

Рис. 3. Запрос «График техосмотров» в режиме конструктора

Результаты запроса:

График техосмотров

Гос. №

Марка

Год выпуска

Последний техосмотр

Следующий техосмотр

О386УГ77

ГАЗ-2410

2005

23.09.08

22.12.08

Т341ГШ77

ГАЗ-3110

1997

03.10.08

01.01.09

М398ГН77

ГАЗ-3110

1997

16.10.08

14.01.09

У402ОЕ77

ГАЗ-2410

2005

17.10.08

15.01.09

У876ВП77

ГАЗ-3110

1993

27.10.08

25.01.09

Р874ИТ77

ГАЗ-2410

2004

31.10.08

29.01.09

М093РТ77

ГАЗ-2404

2003

03.11.08

01.02.09

Т712КД77

ГАЗ-2404

2003

04.11.08

02.02.09

Р983ПО77

ГАЗ-2404

2004

17.11.08

15.02.09

З837ОТ77

ГАЗ-2404

2005

29.11.08

27.02.09

П865ВГ77

ГАЗ-2410

2004

03.12.08

03.03.09

Запрос «Закрепленная машина» используется в ходе ввода данных в путевой лист. После выбора водителя, фигурирующего в путевом листе, этот запрос определяет автомобиль, за которым закреплен данный водитель, а также последнее (то есть максимальное) показание спидометра при возвращении этой машины в таксопарк, которое вносится в очередной путевой лист как значение по умолчанию. Текст запроса на языке SQL:

SELECT Водитель.Машина, Max([Путевой лист].СпидВозвр) AS Спидометр

FROM (Автомобиль INNER JOIN Водитель ON Автомобиль.ГосНомер = Водитель.Машина) LEFT JOIN [Путевой лист] ON Автомобиль.ГосНомер = [Путевой лист].Машина

WHERE (((Водитель.КодВодителя)=[Forms]![Путевой лист]![Водитель]))

GROUP BY Водитель.Машина;

Рис. 4. Запрос «Закрепленная машина» в режиме конструктора

Поскольку результаты запроса зависят от того, какой водитель внесен в путевой лист, они не приводятся в данной записке.

Следующий запрос — «Пробег машины» — по назначению аналогичен предыдущему: поскольку водитель может отправиться в рейс не на той машине, за которой он закреплен, данные о машине в путевом листе могут быть введены отдельно. Рассматриваемый запрос как раз и учитывает такую ситуацию, вычисляя последнее зарегистрированное показание спидометра данной машины. Текст запроса на языке SQL:

SELECT Max([Путевой лист].СпидВозвр) AS Спидометр

FROM [Путевой лист]

WHERE ((([Путевой лист].Машина)=[Forms]![Путевой лист]![Машина]));

Рис. 5. Запрос «Пробег машины» в режиме конструктора

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

Запрос «Средняя выручка по водителям» готовит данные для соответствующего выходного документа. Текст запроса на языке SQL:

SELECT Водитель.ФИО, Водитель.Категория, Avg([Путевой лист].Выручка) AS [Средняя выручка]

FROM Водитель INNER JOIN [Путевой лист] ON Водитель.КодВодителя = [Путевой лист].Водитель

GROUP BY Водитель.ФИО, Водитель.Категория

ORDER BY Avg([Путевой лист].Выручка) DESC;

Рис. 6. Запрос «Средняя выручка по водителям» в режиме конструктора

Результаты запроса:

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

ФИО

Категория

Средняя выручка

Филимонов Олег Константинович

D

1 242,00р.

Самойленко Станислав Васильевич

B

1 185,00р.

Панченко Сергей Алексеевич

B

1 125,00р.

Семашко Юрий Львович

C

1 095,00р.

Панкратов Юрий Иванович

C

1 065,00р.

Шпак Антон Семенович

B

1 059,00р.

Уборевич Кирилл Александрович

C

990,00р.

Чибис Василий Анатольевич

B

970,00р.

Макаренко Евгений Игоревич

B

930,00р.

Коршунов Игорь Васильевич

C

840,00р.

Коваль Владимир Владимирович

B

825,00р.

Игнатович Александр Михайлович

B

729,00р.

Тарасов Иван Григорьевич

C

720,00р.

Костюк Евгений Алексеевич

D

720,00р.

Емельяненко Игорь Александрович

C

579,00р.

Остальные запросы готовят данные для отчетов за заданный период. Период указывается пользователем в форме «Отчетный период»; по умолчанию в форму вносится период, соответствующий текущему месяцу.

Запрос «Статистика по автомобилям» вычисляет для каждой автомашины количество рейсов, суммарный пробег, фактический и нормативный расход топлива, и на основании последних данных — перерасход. Текст запроса на языке SQL:

SELECT Автомобиль.ГосНомер, Марка.Марка, Count([Путевой лист].№) AS Рейсов, Sum([Путевой лист]!СпидВозвр-[Путевой лист]!СпидВыезд) AS Километров, Sum([Путевой лист].Расход) AS [Расход топлива], Sum(([Путевой лист]!СпидВозвр-[Путевой лист]!СпидВыезд)*Марка!Расход/100) AS [Нормативный расход], [Расход топлива]-[Нормативный расход] AS Перерасход

FROM Марка INNER JOIN (Автомобиль INNER JOIN [Путевой лист] ON Автомобиль.ГосНомер = [Путевой лист].Машина) ON Марка.КодМарки = Автомобиль.Марка

WHERE ((([Путевой лист].Дата)>=[Forms]![Отчетный период]![Начало] And ([Путевой лист].Дата)<=[Forms]![Отчетный период]![Конец]))

GROUP BY Автомобиль.ГосНомер, Марка.Марка;

Результаты запроса:

Статистика по автомобилям

Гос. №

Марка

Рейсов

Километров

Расход топлива

Нормативный расход

Перерасход

З837ОТ77

ГАЗ-2404

5

645

63,1000003814697

69,0149987697601

-5,9149983882904

М093РТ77

ГАЗ-2404

2

280

28,8000001907349

29,9599994659424

-1,15999927520752

М398ГН77

ГАЗ-3110

4

470

70

47,9399991035461

22,0600008964539

О386УГ77

ГАЗ-2410

2

190

21,8999996185303

18,2400007247925

3,65999889373779

П865ВГ77

ГАЗ-2410

2

233

26

22,3680008888245

3,63199911117554

Р874ИТ77

ГАЗ-2410

4

540

56,5

51,8400020599365

4,65999794006348

Р983ПО77

ГАЗ-2404

2

276

30

29,5319994735718

0,46800052642822

Т341ГШ77

ГАЗ-3110

2

270

41

27,5399994850159

13,4600005149841

Т712КД77

ГАЗ-2404

2

203

19,6000003814697

21,7209996128082

-2,1209992313385

У402ОЕ77

ГАЗ-2410

2

279

28

26,7840010643005

1,21599893569946

У876ВП77

ГАЗ-3110

5

665

81,5

67,8299987316132

13,6700012683868

Рис. 7. Запрос «Статистика по автомобилям» в режиме конструктора

Запрос «Статистика по водителям» вычисляет количество рейсов, километраж, расход топлива и объем выручки для каждого водителя за заданный период. Текст запроса на языке SQL:

Рис. 8. Запрос «Статистика по водителям» в режиме конструктора

SELECT Водитель.ФИО, Count([Путевой лист].№) AS Рейсов, Sum([Путевой лист]!СпидВозвр-[Путевой лист]!СпидВыезд) AS Километров, Sum([Путевой лист].Расход) AS [Расход топлива], Sum([Путевой лист].Выручка) AS [Объем выручки]

FROM Водитель INNER JOIN [Путевой лист] ON Водитель.КодВодителя = [Путевой лист].Водитель

WHERE ((([Путевой лист].Дата)>=[Forms]![Отчетный период]![Начало] And ([Путевой лист].Дата)<=[Forms]![Отчетный период]![Конец]))

GROUP BY Водитель.ФИО

ORDER BY Водитель.ФИО;

Результаты запроса:

Статистика по водителям

ФИО

Рейсов

Километров

Расход топлива

Объем выручки

Емельяненко Игорь Александрович

2

283

20,5

1 158,00р.

Игнатович Александр Михайлович

2

279

28

1 458,00р.

Коваль Владимир Владимирович

2

233

26

1 650,00р.

Коршунов Игорь Васильевич

2

165

30

1 680,00р.

Костюк Евгений Алексеевич

2

203

19,6000003814697

1 440,00р.

Макаренко Евгений Игоревич

3

430

50,5

2 790,00р.

Панкратов Юрий Иванович

2

260

30,5

2 130,00р.

Панченко Сергей Алексеевич

2

276

30

2 250,00р.

Самойленко Станислав Васильевич

2

305

40

2 370,00р.

Семашко Юрий Львович

2

235

31

2 190,00р.

Тарасов Иван Григорьевич

2

190

21,8999996185303

1 440,00р.

Уборевич Кирилл Александрович

2

280

26

1 980,00р.

Филимонов Олег Константинович

2

270

41

2 484,00р.

Чибис Василий Анатольевич

3

362

42,6000003814697

2 910,00р.

Шпак Антон Семенович

2

280

28,8000001907349

2 118,00р.

Запрос «Статистика по маркам» вычисляет количество автомобилей данной марки, использовавшихся в заданном периоде, нормативный расход топлива на 100 км для автомобилей заданной марки, суммарный пробег автомобилей этой марки в отчетном периоде и фактический расход топлива (суммарный и на 100 км пробега). Текст запроса на языке SQL:

SELECT Марка.Марка, Count(Автомобиль.ГосНомер) AS Автомобилей, Марка.Расход, Sum([Путевой лист]!СпидВозвр-[Путевой лист]!СпидВыезд) AS Километров, Sum([Путевой лист].Расход) AS [Расход топлива], [Расход топлива]/[Километров]*100 AS [Фактический расход]

FROM Марка INNER JOIN (Автомобиль INNER JOIN [Путевой лист] ON Автомобиль.ГосНомер = [Путевой лист].Машина) ON Марка.КодМарки = Автомобиль.Марка

WHERE ((([Путевой лист].Дата)>=[Forms]![Отчетный период]![Начало] And ([Путевой лист].Дата)<=[Forms]![Отчетный период]![Конец]))

GROUP BY Марка.Марка, Марка.Расход;

Рис. 9. Запрос «Статистика по маркам» в режиме конструктора

Результаты запроса:

Статистика по маркам

Марка

Автомобилей

Расход топлива на 100 км

Километров

Расход топлива

Фактический расход

ГАЗ-2404

11

10,7

1404

141,500000953674

10,0783476462731

ГАЗ-2410

10

9,6

1242

132,39999961853

10,66022541212

ГАЗ-3110

11

10,2

1405

192,5

13,7010676156584