Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ВОЛОШИН_КП_СУБД(1).docx
Скачиваний:
3
Добавлен:
22.09.2019
Размер:
5.63 Mб
Скачать

6. Выходные формы

В рамках данного курсового проекта организация данных в виде БД преимущественно была необходима для того, чтобы из БД можно было оперативно получить статистические данные, отчетные формы и другую необходимую и полезную для работы информацию.

Для получения конечных отчетных форм были использованы:

  • Отчетные хранимые процедуры

  • Отчетные хранимые функции

В рамках данного курсового проекта были реализованы следующие хранимые процедуры и функции (приложение 11):

  • PlanProverki – функция, возвращающая гидранты и водоемы подлежащие проверке в заданный день.

  • PPlanProverki – процедура, которая выводит данные, полученные вышеуказанной процедурой

  • LetterToOrganization – функция, возвращающая данные, необходимые для отправки письма в обслуживающую организацию.

  • PLetterToOrganization - процедура, которая выводит данные, полученные вышеуказанной процедурой

  • LetterToGPN - функция, возвращающая данные, необходимые для отправки письма в ГосПожНадзор.

  • PLetterToGosPN - процедура, которая выводит данные, полученные вышеуказанной процедурой

  • PWSFind – процедура, выводящая личную карточку водоисточника

Пример отчета, о гидрантах и водоемах, подлежащих проверке в заданный день.

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

CREATE FUNCTION PlanProverki (@DAT DATE)

RETURNS @Result TABLE (

NameWaterSource VARCHAR (10),

NameStreet VARCHAR(40),

Building VARCHAR(10),

NameDefect VARCHAR(100),

RepairTime INT,

DateInspection DATE)

AS

BEGIN

declare @IDDP TABLE (

IDWaterSource INT,

DateP DATE)

INSERT INTO @IDDP

SELECT

WS.IDWaterSource,

MAX(DateInspection) [DP]

FROM WaterSource WS INNER JOIN Street S

ON WS.IDStreet=S.IDStreet

INNER JOIN Inspection I

ON WS.IDWaterSource=I.IDWaterSource

INNER JOIN TestDefect TD

ON TD.IDInspection=I.IDInspection

INNER JOIN Defect D

ON D.IDDefect=TD.IDDefect

GROUP BY

WS.IDWaterSource

INSERT INTO @Result

SELECT

WS.NameWaterSource [Название],

S.NameStreet [Улица],

WS.Building [Дом],

D.NameDefect [Неисправность],

D.RepairTime [Время на устранение],

I.DateInspection [Датапроверки]

FROM WaterSource WS INNER JOIN Street S

ON WS.IDStreet=S.IDStreet

INNER JOIN Inspection I

ON WS.IDWaterSource=I.IDWaterSource

INNER JOIN TestDefect TD

ON TD.IDInspection=I.IDInspection

INNER JOIN Defect D

ON D.IDDefect=TD.IDDefect

INNER JOIN @IDDP IDDP

ON IDDP.IDWaterSource=WS.IDWaterSource

WHERE ((IDDP.DateP=I.DateInspection) AND (D.NameDefect='исправен') AND (DATEADD(dd,30,IDDP.DateP)<=@DAT))

INSERT INTO @Result

SELECT

WS.NameWaterSource [Название],

S.NameStreet [Улица],

WS.Building [Дом],

D.NameDefect [Неисправность],

D.RepairTime [Время на устранение],

I.DateInspection [Датапроверки]

FROM WaterSource WS INNER JOIN Street S

ON WS.IDStreet=S.IDStreet

INNER JOIN Inspection I

ON WS.IDWaterSource=I.IDWaterSource

INNER JOIN TestDefect TD

ON TD.IDInspection=I.IDInspection

INNER JOIN Defect D

ON D.IDDefect=TD.IDDefect

INNER JOIN @IDDP IDDP

ON IDDP.IDWaterSource=WS.IDWaterSource

INNER JOIN Letter L

ON L.IDLetter=TD.IDLetter

WHERE ((IDDP.DateP=I.DateInspection) AND (D.NameDefect!='исправен') AND (L.DateNextInspection<=@DAT))

RETURN;

END

Процедура, которая отображает данные, полученные функцией.

CREATE PROC PPlanProverki(@Dat DATE)

AS

SELECT

NameWaterSource [Название],

NameStreet [Улица],

Building [Дом],

NameDefect [Неисправность],

RepairTime [Время на устранение],

DateInspection [Дата предыдущей проверки]

FROM PlanProverki(@Dat)

EXEC PPlanProverki '21-01-2012'