Автоматизация оказания услуг проектным специализированным бюро
Проект и реализация на основе клиент-серверных технологий базы данных работ (услуг), выполняемых МГКУПП "Проектное специализированное бюро". Автоматизация расчета стоимости работ. Организация поиска заказа, контроля выполнения и оплаты, отчетности.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 01.02.2017 |
Размер файла | 2,1 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
SET @Money = -@Money
END
ELSE SET @minus = ''
SET @Source = floor( @Money )
SET @sum = @Minus + dbo.SumStr( @source, 1, 'рубль', 'рубля', 'рублей')
SET @sum = Upper( SubString( @sum,1,1) ) + SubString( @sum, 2, len(@sum)-1)
RETURN @sum
END
17. Преобразование числа из цифрого вида в символьное.
CREATE FUNCTION SumStr(@Source bigint, @Rod int, @w1 varchar(40), @w2to4 varchar(40), @w5to10 varchar(40) )
RETURNS varchar(4000)
AS
BEGIN
DECLARE @Summa varchar(4000)
DECLARE @TempValue bigint
IF @Source = 0 BEGIN
SET @Summa = 'ноль ' + RTrim(@w5to10)
RETURN @Summa
END
SELECT @TempValue = @Source, @Summa = ''
-- единицы
SELECT @Summa = Txt, @TempValue = Rest from dbo.SumStrThree( @Summa, @TempValue, @Rod, @w1, @w2to4, @w5to10)
IF @TempValue = 0 RETURN @Summa
-- тысячи
SELECT @Summa = Txt, @TempValue = Rest from dbo.SumStrThree( @Summa, @TempValue, 2, 'тысяча', 'тысячи', 'тысяч')
IF @TempValue = 0 RETURN @Summa
-- миллионы
SELECT @Summa = Txt, @TempValue = Rest from dbo.SumStrThree( @Summa, @TempValue, 1, 'миллион', 'миллиона', 'миллионов')
IF @TempValue = 0 RETURN @Summa
-- миллиардов
SELECT @Summa = Txt, @TempValue = Rest from dbo.SumStrThree( @Summa, @TempValue, 1, 'миллиард', 'миллиарда', 'миллиардов')
IF @TempValue = 0 RETURN @Summa
SELECT @Summa = Txt, @TempValue = Rest from dbo.SumStrThree( @Summa, @TempValue, 1, 'трилллион', 'триллиона', 'триллионов')
RETURN @Summa
END
18.Формирования строки для трехзначного числа.
CREATE FUNCTION SumStrThree (@Summa varchar(4000), @TempValue bigint, @Rod int, @w1 varchar(40), @w2to4 varchar(40), @w5to10 varchar(40))
RETURNS @tab TABLE (Txt varchar(4000), Rest bigint)
AS
BEGIN
DECLARE @Rest int, @Rest1 int, @ENDWord varchar(100), @s1 varchar(40), @s10 varchar(40), @s100 varchar(40)
SET @Rest = @TempValue % 1000
SET @TempValue = @TempValue / 1000
IF @Rest = 0
BEGIN -- последние три знака нулевые
IF @Summa = ''
SET @Summa = @w5to10 + ' '
INSERT INTO @tab
SELECT @Summa, @TempValue
RETURN
END
-- начинаем подсчет с @Rest
SET @ENDWord = @w5to10
-- сотни
SELECT @s100 = CASe @Rest / 100
WHEN 0 THEN ''
WHEN 1 THEN 'сто '
WHEN 2 THEN 'двести '
WHEN 3 THEN 'триста '
WHEN 4 THEN 'четыреста '
WHEN 5 THEN 'пятьсот '
WHEN 6 THEN 'шестьсот '
WHEN 7 THEN 'семьсот '
WHEN 8 THEN 'восемьсот '
WHEN 9 THEN 'девятьсот '
END
-- десятки
SET @Rest = @Rest % 100
SET @Rest1 = @Rest / 10
SET @s1 = ''
SELECT @s10 = CASe @Rest1
WHEN 0 THEN ''
WHEN 1 THEN
CASe @Rest
WHEN 10 THEN 'десять '
WHEN 11 THEN 'одиннадцать '
WHEN 12 THEN 'двенадцать '
WHEN 13 THEN 'тринадцать '
WHEN 14 THEN 'четырнадцать '
WHEN 15 THEN 'пятнадцать '
WHEN 16 THEN 'шестнадцать '
WHEN 17 THEN 'семнадцать '
WHEN 18 THEN 'восемнадцать '
WHEN 19 THEN 'девятнадцать '
END
WHEN 2 THEN 'двадцать '
WHEN 3 THEN 'тридцать '
WHEN 4 THEN 'сорок '
WHEN 5 THEN 'пятьдесят '
WHEN 6 THEN 'шестьдесят '
WHEN 7 THEN 'семьдесят '
WHEN 8 THEN 'восемьдесят '
WHEN 9 THEN 'девяносто '
END
IF @Rest1 <> 1
BEGIN -- единицы
IF @Rest % 10 = 1
SET @ENDWord = @w1
ELSE IF @Rest % 10 between 2 and 4
SET @ENDWord = @w2to4
SELECT @s1 = CASe @Rest % 10
WHEN 0 THEN ''
WHEN 1 THEN
CASe @Rod
WHEN 1 THEN 'один '
WHEN 2 THEN 'одна '
WHEN 3 THEN 'одно '
END
WHEN 2 THEN
CASe
WHEN @Rod = 2
THEN 'две '
ELSE 'два '
END
WHEN 3 THEN 'три '
WHEN 4 THEN 'четыре '
WHEN 5 THEN 'пять '
WHEN 6 THEN 'шесть '
WHEN 7 THEN 'семь '
WHEN 8 THEN 'восемь '
WHEN 9 THEN 'девять '
END
END
-- сборка строки
INSERT INTO @Tab
SELECT Txt = RTrim(RTrim( @s100 + @s10 + @s1 + @ENDWord) + ' ' + @Summa), @TempValue
RETURN
END
19. Контроль срока на исправление нарушения, дается семь дней, иначе направляется предписание. Возвращает колличество дней на исправление.
CREATE FUNCTION UvedomlenieOut (@date_start datetime)
RETURNS int
AS
BEGIN
DECLARE @дней_исправить int
SET @дней_исправить=7
RETURN (@дней_исправить-DATEDIFF(day, @date_start, GETDATE()))
END
2.4 T-SQL-определения курсоров
1. Курсор для поиска повторных записей в справочнике, используется в процедуре Заказчики_УНП_повтор_cur.
/*Создаём локальный курсор, который будет существовать до завершения выполнения процедуры*/
DECLARE customer_cursor CURSOR LOCAL FOR SELECT
/*Какие поля будут показаны в курсоре*/
УНП,Наименование_краткое
/*Из какой таблицы выбираются данные*/
FROM [Заказчики]
WHERE УНП<>'' --унп=NULL
ORDER BY УНП
/*открываем локальный курсор*/
OPEN customer_cursor
FETCH NEXT FROM customer_cursor INTO @unp, @customer
WHILE @@FETCH_STATUS=0
BEGIN
/* программный код*/
/* переход к следующей записи курсора*/
FETCH NEXT FROM customer_cursor INTO @unp, @customer
END
/*закрываем курсор*/
CLOSE customer_cursor
/*освобождаем курсор*/
DEALLOCATE customer_cursor
END
2. Курсор для поиска и удаления повторных записей в справочнике заказчиков, используется в процедуре Заказчики_УНП_чистка_cur.
DECLARE customer_cursor CURSOR LOCAL FOR SELECT УНП,id_customer
FROM [Заказчики]
WHERE УНП<>'' --унп=NULL
ORDER BY УНП
OPEN customer_cursor
FETCH NEXT FROM customer_cursor INTO @unp, @id_customer
WHILE @@FETCH_STATUS=0
BEGIN
/* программный код*/
/* переход к следующей записи курсора*/
FETCH NEXT FROM customer_cursor
INTO @unp, @id_customer
END
CLOSE customer_cursor
DEALLOCATE customer_cursor
END
3. Курсор для подсчета прибыли от деятельности отделов организации в процедуре Отделы_Прибыль_cur
DECLARE TopOtdel CURSOR LOCAL FOR SELECT номер_отдела, отдел
FROM Отделы ORDER BY номер_отдела
OPEN TopOtdel
FETCH NEXT FROM TopOtdel INTO @номер_отдела, @отдел
WHILE @@FETCH_STATUS=0
BEGIN
/* программный код*/
/* переход к следующей записи курсора*/
FETCH NEXT FROM TopOtdel INTO @номер_отдела, @отдел
END
CLOSE TopOtdel
DEALLOCATE TopOtdel
END
4. Курсор для получения информации о поступлении денежных средств по услугам в процентном сравнении по отношению к предыдущему год, используется в процедуре Услуги_Рост_cur.
DECLARE Usluga CURSOR LOCAL FOR
SELECT id_service, SUM(сумма_договора)AS sum_cur FROM Договора
WHERE YEAR(дата_договора)= YEAR (GETDATE()) --текущий год
GROUP BY id_service
OPEN Usluga
FETCH NEXT FROM Usluga INTO @id_service, @sum_cur
WHILE @@FETCH_STATUS=0
BEGIN
/* программный код*/
/* переход к следующей записи курсора*/
FETCH NEXT FROM Usluga INTO @id_service, @sum_cur
END
CLOSE usluga
DEALLOCATE usluga
END
5. Курсор для функции подсчета прибыли от деятельности отдела BigMoney_cur()
DECLARE Counter CURSOR LOCAL FOR SELECT сумма_договора FROM Договора
WHERE номер_отдела=@номер_отдела
OPEN Counter
FETCH NEXT FROM Counter INTO @сумма_договора
WHILE @@FETCH_STATUS=0
BEGIN
/* программный код*/
/* переход к следующей записи курсора*/
FETCH NEXT FROM Counter INTO @сумма_договора
END
CLOSE Counter
DEALLOCATE Counter
END
3. ПРОЕКТИРОВАНИЕ СИСТЕМЫ БЕЗОПАСНОСТИ. УПРАВЛЕНИЕ АВТОРИЗАЦИЕЙ, УПРАВЛЕНИЕ РОЛЯМИ, УПРАВЛЕНИЕ РАЗРЕШЕНИЯМИ СРЕДСТВАМИ TRANSACT SQL
Система безопасности базы данных контролирует выполняемые действия и определяет информацию, доступную для просмотра и модификации. Надежная система безопасности гарантирует защиту данных независимо от того, как пользователи получают доступ к базе данных.
Чтобы пользовательское учетное имя получило доступ к БД, одного ввода имени пользователя и пароля недостаточно. Должно быть разрешение на исполнение SQL-выражений или на работу с объектами.
Назначение разрешений каждому пользователю в отдельности занимает много времени при сопровождении БД со средним и большим числом пользователей. Для облегчения операций по назначению разрешений пользователям SQL Server 2000 поддерживает роли SQL Server.
Роли создаются и сопровождаются в рамках SQL Server. Существует два типа ролей: стандартные и прикладные. Стандартным ролям (standard roles) назначаются привилегии, которые могут наследоваться пользователями, получающими членство в роли. Стандартные роли могут содержать все типы учетных имен: учетные записи пользователей и групп Windows, идентификаторы SQL Server и другие стандартные роли.
Для упрощения администрирования БД и самого сервера в SQL Server предусмотрен ряд стандартных предопределенных ролей. В основном их можно разделить на две категории: фиксированные роли на уровне сервера, или серверные роли (fixed server role), и фиксированные роли на уровне БД (fixed database role). Членство в фиксированных ролях на уровне сервера дает возможность администрирования сервера. Члены фиксированных ролей на уровне БД могут администрировать некоторые БД.
Прикладные роли разработаны для управления привилегиями пользователей, обращающихся к БД через некоторое приложение.
4. ПРОКОММЕНТИРОВАННЫЙ СКРИПТ СОЗДАНИЯ БАЗЫ ДАННЫХ
-- Definition for table Услуги :
CREATE TABLE [dbo].[Услуги] (
[id_service] int IDENTITY(1, 1) NOT NULL,
[услуга] varchar(250) COLLATE Cyrillic_General_CI_AS NOT NULL,
[описание] varchar(250) COLLATE Cyrillic_General_CI_AS NULL,
[тариф] money NULL,
[kod_servise] varchar(10) COLLATE Cyrillic_General_CI_AS NULL)
ON [PRIMARY]
GO
-- Definition for table Заказчики :
CREATE TABLE [dbo].[Заказчики] (
[id_customer] int IDENTITY(1, 1) NOT NULL,
[наименование_полное] varchar(180) COLLATE Cyrillic_General_CI_AS NOT NULL,
[руководитель_ип] text COLLATE Cyrillic_General_CI_AS NULL,
[адрес_почта] varchar(80) COLLATE Cyrillic_General_CI_AS NULL,
[адрес_электронный] varchar(30) COLLATE Cyrillic_General_CI_AS NULL,
[сайт] varchar(30) COLLATE Cyrillic_General_CI_AS NULL,
[телефон] varchar(20) COLLATE Cyrillic_General_CI_AS NULL,
[мобильный] varchar(20) COLLATE Cyrillic_General_CI_AS NULL,
[наименование_краткое] varchar(50) COLLATE Cyrillic_General_CI_AS NOT NULL,
[kod] char(5) COLLATE Cyrillic_General_CI_AS NULL,
[руководитель_рп] text COLLATE Cyrillic_General_CI_AS NULL,
[счет_в_банке] varchar(120) COLLATE Cyrillic_General_CI_AS NULL,
[лицензия_ИП] varchar(20) COLLATE Cyrillic_General_CI_AS NULL,
[УНП] varchar(10) COLLATE Cyrillic_General_CI_AS NULL,
[ОКПО] varchar(10) COLLATE Cyrillic_General_CI_AS NULL,
[основание] text COLLATE Cyrillic_General_CI_AS NULL,
[ID] char(9) COLLATE Cyrillic_General_CI_AS NULL)
ON [PRIMARY]
TEXTIMAGE_ON [PRIMARY]
GO
-- Definition for table Сотрудники :
CREATE TABLE [dbo].[Сотрудники] (
[in_rn] varchar(14) COLLATE Cyrillic_General_CI_AS NOT NULL,
[ФИО] varchar(50) COLLATE Cyrillic_General_CI_AS NOT NULL)
ON [PRIMARY]
GO
-- Definition for table Подразделения :
CREATE TABLE [dbo].[Подразделения] (
[номер_подразделения] int NOT NULL,
[подразделение] varchar(50) COLLATE Cyrillic_General_CI_AS NOT NULL)
ON [PRIMARY]
GO
-- Definition for table Отделы :
CREATE TABLE [dbo].[Отделы] (
[номер_отдела] int NOT NULL,
[отдел] varchar(50) COLLATE Cyrillic_General_CI_AS NOT NULL,
[in_rn] varchar(14) COLLATE Cyrillic_General_CI_AS NOT NULL)
ON [PRIMARY]
GO
-- Definition for table Должности :
CREATE TABLE [dbo].[Должности] (
[id_staff] int IDENTITY(1, 1) NOT NULL,
[должность] varchar(80) COLLATE Cyrillic_General_CI_AS NOT NULL,
[in_rn] varchar(14) COLLATE Cyrillic_General_CI_AS NOT NULL,
[номер_подразделения] int NOT NULL,
[номер_отдела] int NOT NULL)
ON [PRIMARY]
GO
-- Definition for table Шаблоны_договоров :
CREATE TABLE [dbo].[Шаблоны_договоров] (
[id_pattern] int IDENTITY(0, 1) NOT NULL,
[шаблон] varchar(30) COLLATE Cyrillic_General_CI_AS NOT NULL,
[файл] varchar(50) COLLATE Cyrillic_General_CI_AS NULL,
[настройка_формы] varchar(50) COLLATE Cyrillic_General_CI_AS NULL)
ON [PRIMARY]
GO
--определение попадание даты в указанный диапозон от текущей даты
CREATE FUNCTION [dbo].DateTrue (@data datetime)
RETURNS int
AS
BEGIN
DECLARE @диапозон int
SET @диапозон = 10
DECLARE @i int
IF (DATEDIFF(year, @data, GETDATE()) <= @диапозон) OR (@data IS NULL) SET @i=1
ELSE SET @i=0
RETURN @i
END
GO
-- Definition for table Договора_Deleted :
CREATE TABLE [dbo].[Договора_Deleted] (
[id_contract] int NULL,
[номер_договора] varchar(20) COLLATE Cyrillic_General_CI_AS NULL,
[дата_договора] datetime NULL,
[срок_исполнения] int NULL,
[сумма_договора] money NULL,
[сумма_оплачено] money NULL,
[акт_подписан] char(2) COLLATE Cyrillic_General_CI_AS NULL,
[отказ] char(2) COLLATE Cyrillic_General_CI_AS NULL,
[примечание] text COLLATE Cyrillic_General_CI_AS NULL,
[id_service] int NULL,
[id_pattern] int NULL,
[id_customer] int NULL,
[id_staff] int NULL,
[номер_отдела] int NULL,
[id_pasport] varchar(20) COLLATE Cyrillic_General_CI_AS NULL,
[id_auction] varchar(20) COLLATE Cyrillic_General_CI_AS NULL,
[id_topographical] varchar(20) COLLATE Cyrillic_General_CI_AS NULL,
[id_project] varchar(20) COLLATE Cyrillic_General_CI_AS NULL,
[дата_начала] datetime NULL,
[НДС] int NULL,
[предоплата_процент] int NULL,
[описание_работ] varchar(250) COLLATE Cyrillic_General_CI_AS NULL,
[дата_исполнения] datetime NULL,
[договор_забрали] datetime NULL,
[договор_вернули] datetime NULL,
[акт_оплачен] datetime NULL,
[UpdateDate] datetime NULL,
[UpdatedBy] varchar(50) COLLATE Cyrillic_General_CI_AS NULL,
[DeleteDate] datetime NULL,
[DeletedBy] varchar(50) COLLATE Cyrillic_General_CI_AS NULL)
ON [PRIMARY]
TEXTIMAGE_ON [PRIMARY]
GO
-- Definition for table Договора :
CREATE TABLE [dbo].[Договора] (
[id_contract] int IDENTITY(1, 1) NOT NULL,
[номер_договора] varchar(20) COLLATE Cyrillic_General_CI_AS CONSTRAINT [DF__Договора__номер___32AB8735] DEFAULT 'б/н' NOT NULL,
[дата_договора] datetime NULL,
[срок_исполнения] int CONSTRAINT [DF__Договора__срок_и__2A164134] DEFAULT 30 NOT NULL,
[сумма_договора] money CONSTRAINT [DF__Договора__сумма___30C33EC3] DEFAULT 0 NULL,
[сумма_оплачено] money CONSTRAINT [DF__Договора__сумма___31B762FC] DEFAULT 0 NULL,
[акт_подписан] char(2) COLLATE Cyrillic_General_CI_AS NULL,
[отказ] char(2) COLLATE Cyrillic_General_CI_AS NULL,
[примечание] text COLLATE Cyrillic_General_CI_AS NULL,
[id_service] int CONSTRAINT [DF__Договора__id_ser__2BFE89A6] DEFAULT 88 NOT NULL,
[id_pattern] int CONSTRAINT [DF__Договора__id_pat__3864608B] DEFAULT 1 NULL,
[id_customer] int NOT NULL,
[id_staff] int CONSTRAINT [DF__Договора__id_sta__2CF2ADDF] DEFAULT 1 NOT NULL,
[номер_отдела] int CONSTRAINT [DF__Договора__номер___2FCF1A8A] DEFAULT 0 NOT NULL,
[id_pasport] varchar(20) COLLATE Cyrillic_General_CI_AS NULL,
[id_auction] varchar(20) COLLATE Cyrillic_General_CI_AS NULL,
[id_topographical] varchar(20) COLLATE Cyrillic_General_CI_AS NULL,
[id_project] varchar(20) COLLATE Cyrillic_General_CI_AS NULL,
[дата_начала] datetime NULL,
[НДС] int CONSTRAINT [DF__Договора__НДС__2B0A656D] DEFAULT 20 NOT NULL,
[предоплата_процент] int CONSTRAINT [DF__Договора__предоп__2EDAF651] DEFAULT 100 NOT NULL,
[описание_работ] text COLLATE Cyrillic_General_CI_AS NULL,
[дата_исполнения] datetime NULL,
[договор_забрали] datetime NULL,
[договор_вернули] datetime NULL,
[акт_оплачен] datetime NULL,
[UpdateDate] datetime NULL,
[UpdatedBy] varchar(50) COLLATE Cyrillic_General_CI_AS NULL)
ON [PRIMARY]
TEXTIMAGE_ON [PRIMARY]
GO
-- Definition for table Префикс :
CREATE TABLE [dbo].[Префикс] (
[id_ntu] int IDENTITY(1, 1) NOT NULL,
[вид] nvarchar(50) COLLATE Cyrillic_General_CI_AS NOT NULL)
ON [PRIMARY]
GO
-- Definition for table Улицы :
CREATE TABLE [dbo].[Улицы] (
[id_street] int IDENTITY(1, 1) NOT NULL,
[улица] nvarchar(50) COLLATE Cyrillic_General_CI_AS NOT NULL,
[id_admdel] int NOT NULL,
[id_ntu] int NOT NULL)
ON [PRIMARY]
GO
-- Definition for table Нормы_закона :
CREATE TABLE [dbo].[Нормы_закона] (
[id_norma] int IDENTITY(1, 1) NOT NULL,
[норма] text COLLATE Cyrillic_General_CI_AS NOT NULL)
ON [PRIMARY]
TEXTIMAGE_ON [PRIMARY]
GO
-- Definition for table Нарушения_рекламы_Deleted :
CREATE TABLE [dbo].[Нарушения_рекламы_Deleted] (
[id_badrek] int NULL,
[дом] varchar(20) COLLATE Cyrillic_General_CI_AS NULL,
[id_street] int NULL,
[id_customer] int NULL,
[дата_обнаружения] datetime NULL,
[описание] varchar(250) COLLATE Cyrillic_General_CI_AS NULL,
[исправлено] char(2) COLLATE Cyrillic_General_CI_AS NULL,
[фото] varchar(150) COLLATE Cyrillic_General_CI_AS NULL,
[предписание] datetime NULL,
[уведомление] datetime NULL,
[результат] varchar(250) COLLATE Cyrillic_General_CI_AS NULL,
[id_norma] int NULL,
[объект_рекламы] varchar(250) COLLATE Cyrillic_General_CI_AS NULL,
[UpdateDate] datetime NULL,
[UpdatedBy] varchar(50) COLLATE Cyrillic_General_CI_AS NULL,
[DeleteDate] datetime NULL,
[DeletedBy] varchar(50) COLLATE Cyrillic_General_CI_AS NULL)
ON [PRIMARY]
GO
-- Definition for table Нарушения_рекламы :
CREATE TABLE [dbo].[Нарушения_рекламы] (
[id_badrek] int IDENTITY(1, 1) NOT NULL,
[дом] varchar(20) COLLATE Cyrillic_General_CI_AS NULL,
[id_street] int NULL,
[id_customer] int NULL,
[дата_обнаружения] datetime NOT NULL,
[описание] varchar(250) COLLATE Cyrillic_General_CI_AS NOT NULL,
[исправлено] char(2) COLLATE Cyrillic_General_CI_AS NULL,
[фото] varchar(150) COLLATE Cyrillic_General_CI_AS NULL,
[предписание] datetime NULL,
[уведомление] datetime NULL,
[результат] varchar(250) COLLATE Cyrillic_General_CI_AS NULL,
[id_norma] int NULL,
[объект_рекламы] varchar(250) COLLATE Cyrillic_General_CI_AS NULL,
[UpdateDate] datetime NULL,
[UpdatedBy] varchar(50) COLLATE Cyrillic_General_CI_AS NULL)
ON [PRIMARY]
GO
-- Definition for table Районы :
CREATE TABLE [dbo].[Районы] (
[id_admdel] int IDENTITY(1, 1) NOT NULL,
[район] nvarchar(50) COLLATE Cyrillic_General_CI_AS NOT NULL)
ON [PRIMARY]
GO
--функция с курсором для подсчета прибыли от деятельности отдела
CREATE FUNCTION [dbo].BigMoney_cur (@номер_отдела int)
RETURNS money
AS
BEGIN
DECLARE @сумма_договора money, @огого money
SET @огого=0
DECLARE Counter CURSOR LOCAL FOR SELECT сумма_договора FROM Договора
WHERE номер_отдела=@номер_отдела
OPEN Counter
FETCH NEXT FROM Counter INTO @сумма_договора
WHILE @@FETCH_STATUS=0
BEGIN
SET @огого=@огого+@сумма_договора
FETCH NEXT FROM Counter INTO @сумма_договора
END
CLOSE Counter
DEALLOCATE Counter
RETURN @огого
END
GO
--конвертация даты для переноса информации из базы "1С Предприятие"
CREATE FUNCTION [dbo].ConvDate (@str char(23))
RETURNS datetime
AS
BEGIN
RETURN CAST ( LEFT(@str,8) AS datetime)
END
GO
--конвертация информации о предоплате из базы "1С Предприятие"
CREATE FUNCTION [dbo].ConvPr (@str char(50))
RETURNS int
AS
BEGIN
DECLARE @i int
SET @i=CHARINDEX('%',@str)-1
IF (@str IS NULL) OR (@i<0) SET @str='100%'
RETURN CAST(LEFT(@str,CHARINDEX('%',@str)-1)AS int)
END
GO
--подсчет количества дней до окончания срока исполнения договора
CREATE FUNCTION [dbo].DateDiffSrok (@date_start datetime, @date_end datetime, @srok int)
RETURNS int
AS
BEGIN
IF (@date_end IS NULL) SET @date_end = GETDATE()
RETURN (DATEDIFF(day, @date_start, @date_end)-@srok)
END
GO
--формирования строки для трехзначного числа:
CREATE FUNCTION [dbo].SumStrThree (@Summa varchar(4000), @TempValue bigint, @Rod int, @w1 varchar(40), @w2to4 varchar(40), @w5to10 varchar(40))
RETURNS @tab TABLE (Txt varchar(4000), Rest bigint)
AS
BEGIN
/*
DECLARE @Rest int, @Rest1 int, @ENDWord varchar(100), @s1 varchar(40), @s10 varchar(40), @s100 varchar(40)
SET @Rest = @TempValue % 1000
SET @TempValue = @TempValue / 1000
IF @Rest = 0
BEGIN -- последние три знака нулевые
IF @Summa = ''
SET @Summa = @w5to10 + ' '
INSERT INTO @tab
SELECT @Summa, @TempValue
RETURN
END
-- начинаем подсчет с @Rest
SET @ENDWord = @w5to10
-- сотни
SELECT @s100 = CASe @Rest / 100
WHEN 0 THEN ''
WHEN 1 THEN 'сто '
WHEN 2 THEN 'двести '
WHEN 3 THEN 'триста '
WHEN 4 THEN 'четыреста '
WHEN 5 THEN 'пятьсот '
WHEN 6 THEN 'шестьсот '
WHEN 7 THEN 'семьсот '
WHEN 8 THEN 'восемьсот '
WHEN 9 THEN 'девятьсот '
END
-- десятки
SET @Rest = @Rest % 100
SET @Rest1 = @Rest / 10
SET @s1 = ''
SELECT @s10 = CASe @Rest1
WHEN 0 THEN ''
WHEN 1 THEN
CASe @Rest
WHEN 10 THEN 'десять '
WHEN 11 THEN 'одиннадцать '
WHEN 12 THEN 'двенадцать '
WHEN 13 THEN 'тринадцать '
WHEN 14 THEN 'четырнадцать '
WHEN 15 THEN 'пятнадцать '
WHEN 16 THEN 'шестнадцать '
WHEN 17 THEN 'семнадцать '
WHEN 18 THEN 'восемнадцать '
WHEN 19 THEN 'девятнадцать '
END
WHEN 2 THEN 'двадцать '
WHEN 3 THEN 'тридцать '
WHEN 4 THEN 'сорок '
WHEN 5 THEN 'пятьдесят '
WHEN 6 THEN 'шестьдесят '
WHEN 7 THEN 'семьдесят '
WHEN 8 THEN 'восемьдесят '
WHEN 9 THEN 'девяносто '
END
IF @Rest1 <> 1
BEGIN -- единицы
IF @Rest % 10 = 1
SET @ENDWord = @w1
ELSE IF @Rest % 10 between 2 and 4
SET @ENDWord = @w2to4
SELECT @s1 = CASe @Rest % 10
WHEN 0 THEN ''
WHEN 1 THEN
CASe @Rod
WHEN 1 THEN 'один '
WHEN 2 THEN 'одна '
WHEN 3 THEN 'одно '
END
WHEN 2 THEN
CASe
WHEN @Rod = 2
THEN 'две '
ELSE 'два '
END
WHEN 3 THEN 'три '
WHEN 4 THEN 'четыре '
WHEN 5 THEN 'пять '
WHEN 6 THEN 'шесть '
WHEN 7 THEN 'семь '
WHEN 8 THEN 'восемь '
WHEN 9 THEN 'девять '
END
END
-- сборка строки
INSERT INTO @Tab
SELECT Txt = RTrim(RTrim( @s100 + @s10 + @s1 + @ENDWord) + ' ' + @Summa), @TempValue
RETURN
END
GO
-- преобразование числа из цифрого вида в символьное
CREATE FUNCTION [dbo].SumStr(@Source bigint, @Rod int, @w1 varchar(40), @w2to4 varchar(40), @w5to10 varchar(40) )
RETURNS varchar(4000)
AS
BEGIN
DECLARE @Summa varchar(4000)
DECLARE @TempValue bigint
IF @Source = 0 BEGIN
SET @Summa = 'ноль ' + RTrim(@w5to10)
RETURN @Summa
END
SELECT @TempValue = @Source, @Summa = ''
-- единицы
SELECT @Summa = Txt, @TempValue = Rest from dbo.SumStrThree( @Summa, @TempValue, @Rod, @w1, @w2to4, @w5to10)
IF @TempValue = 0 RETURN @Summa
-- тысячи
SELECT @Summa = Txt, @TempValue = Rest from dbo.SumStrThree( @Summa, @TempValue, 2, 'тысяча', 'тысячи', 'тысяч')
IF @TempValue = 0 RETURN @Summa
-- миллионы
SELECT @Summa = Txt, @TempValue = Rest from dbo.SumStrThree( @Summa, @TempValue, 1, 'миллион', 'миллиона', 'миллионов')
IF @TempValue = 0 RETURN @Summa
-- миллиардов
SELECT @Summa = Txt, @TempValue = Rest from dbo.SumStrThree( @Summa, @TempValue, 1, 'миллиард', 'миллиарда', 'миллиардов')
IF @TempValue = 0 RETURN @Summa
SELECT @Summa = Txt, @TempValue = Rest from dbo.SumStrThree( @Summa, @TempValue, 1, 'трилллион', 'триллиона', 'триллионов')
RETURN @Summa
END
GO
--представление числа (денежной суммы) прописью
CREATE FUNCTION [dbo].MoneyWords( @Money money )
RETURNS varchar(max)
AS
BEGIN
DECLARE @Source bigint
DECLARE @minus varchar(10)
DECLARE @sum varchar(max)
IF @Money < 0
BEGIN
SET @minus = 'Минус '
SET @Money = -@Money
END
ELSE SET @minus = ''
SET @Source = floor( @Money )
SET @sum = @Minus + dbo.SumStr( @source, 1, 'рубль', 'рубля', 'рублей')
SET @sum = Upper( SubString( @sum,1,1) ) + SubString( @sum, 2, len(@sum)-1)
RETURN @sum
END
GO
--на исправление нарушения дается 7 дней, иначе направляется предписание
--возвращает колличество дней на исправление
CREATE FUNCTION [dbo].UvedomlenieOut (@date_start datetime)
RETURNS int
AS
BEGIN
DECLARE @дней_исправить int
SET @дней_исправить=7
RETURN (@дней_исправить-DATEDIFF(day, @date_start, GETDATE()))
END
GO
--SELECT [DISTINCT] <Список полей> или *
-- [FROM <Список таблиц>]
-- [WHERE <Условие отбора>]
-- [GROUP BY <Список полей для группирования> [ASC | DESC], ...]
-- [HAVING <Условие группирования>]
-- [ORDER BY <Список полей для сортировки> [ASC | DESC], ...]
CREATE VIEW [dbo].Договора_неоплачены
AS
SELECT Договора.номер_договора, Договора.сумма_договора, Договора.сумма_оплачено,
Заказчики.наименование_краткое
FROM Договора INNER JOIN
Заказчики ON Договора.id_customer=Заказчики.id_customer
WHERE Договора.сумма_оплачено < Договора.сумма_договора
GO
--список сотрудников для форм с выбором исполнителя (ответсвенной должности)
CREATE VIEW [dbo].Должности_по_сотруднику
AS
SELECT Должности.id_staff, Сотрудники.ФИО, Отделы.отдел, Должности.Должность
FROM Отделы INNER JOIN (Сотрудники INNER JOIN Должности ON Сотрудники.in_rn = Должности.in_rn)ON Отделы.номер_отдела = Должности.номер_отдела
GO
--информация о поступивших средствах от заказчика по всем договорам базы
CREATE VIEW [dbo].Заказчики_всего_оплачено
AS
SELECT TOP(100)SUM(Договора.сумма_оплачено) ВСЕГО,Заказчики.id_customer, Заказчики.наименование_краткое
FROM Договора INNER JOIN
Заказчики ON Договора.id_customer=Заказчики.id_customer
GROUP by Заказчики.id_customer, Заказчики.наименование_краткое
ORDER BY SUM(Договора.сумма_оплачено)
GO
--список заказчиков, договора которых по текущей дате на исполнении
--для информационной рассылки
CREATE VIEW [dbo].Заказчики_текущие
AS
SELECT Договора.номер_договора, Договора.дата_исполнения,
Заказчики.наименование_краткое, Заказчики.адрес_почта
FROM Договора INNER JOIN
Заказчики ON Договора.id_customer=Заказчики.id_customer
WHERE Договора.дата_исполнения IS NULL
GO
--список отделов суказанием их руководителей
CREATE VIEW [dbo].Информация_по_отделам
AS
SELECT Отделы.номер_отдела, Отделы.отдел,Сотрудники.ФИО AS начальник
FROM Сотрудники INNER JOIN Отделы ON Сотрудники.in_rn = Отделы.in_rn
GO
--вся информация по договору (карточка договора)
CREATE VIEW [dbo].Карточка_Договора
AS
SELECT Договора.*, dbo.MoneyWords(Договора.сумма_договора)AS сум_дог,
Должности.должность, Отделы.отдел, Услуги.услуга, Заказчики.наименование_полное
FROM Договора INNER JOIN
Должности ON Договора.id_staff = Должности.id_staff INNER JOIN
Отделы ON Договора.номер_отдела = Отделы.номер_отдела INNER JOIN
Услуги ON Договора.id_service = Услуги.id_service INNER JOIN
Заказчики ON Договора.id_customer = Заказчики.id_customer
GO
--вся информация по нарущению рекламы (карточка нарущения рекламы)
CREATE VIEW [dbo].Карточка_Нарушения_рекламы
AS
SELECT Нарушения_рекламы.*, Заказчики.наименование_краткое,
Префикс.вид+Улицы.улица+', д.'+Нарушения_рекламы.дом AS Адрес
FROM Нарушения_рекламы INNER JOIN
Заказчики ON Нарушения_рекламы.id_customer=Заказчики.id_customer INNER JOIN
Улицы ON Нарушения_рекламы.id_street=Улицы.id_street INNER JOIN
Префикс ON Улицы.id_ntu=Префикс.id_ntu
GO
--для отчета по структуре организации с указанием ФИО сотрудников
CREATE VIEW [dbo].Структура_организации
AS
SELECT Должности.должность, Подразделения.подразделение, Отделы.отдел, Сотрудники.ФИО
FROM Подразделения INNER JOIN
(Отделы INNER JOIN
(Должности INNER JOIN
Сотрудники ON Должности.in_rn = Сотрудники.in_rn)
ON Отделы.номер_отдела = Должности.номер_отдела)
ON Подразделения.номер_подразделения = Должности.номер_подразделения
GO
--оставшееся количество дней до конца срока уведомления
CREATE VIEW [dbo].Уведомление_осталось
AS
SELECT Заказчики.наименование_краткое,
Префикс.вид+Улицы.улица+', д.'+Нарушения_рекламы.дом AS адрес,
Нарушения_рекламы.описание,Нарушения_рекламы.уведомление , dbo.UvedomlenieOut(Нарушения_рекламы.уведомление) AS [осталось дней]
FROM Нарушения_рекламы INNER JOIN
Заказчики ON Нарушения_рекламы.id_customer = Заказчики.id_customer INNER JOIN
Улицы ON Нарушения_рекламы.id_street=Улицы.id_street INNER JOIN
Префикс ON Улицы.id_ntu=Префикс.id_ntu
WHERE (Нарушения_рекламы.уведомление IS NOT NULL) AND (Нарушения_рекламы.предписание IS NULL)
GO
--список улиц города с указанием префикса и административного деления
CREATE VIEW [dbo].Улицы_районы
AS
SELECT Улицы.id_street, Префикс.вид, Улицы.улица, Районы.район
FROM Районы INNER JOIN
(Улицы INNER JOIN
Префикс ON Улицы.id_ntu=Префикс.id_ntu)
ON Районы.id_admdel=Улицы.id_admdel
GO
-- количество договоров за текущий месяц
CREATE PROCEDURE [dbo].CountDogMonth
AS
BEGIN
SELECT Count(id_contract)
FROM Договора
WHERE MONTH(дата_договора) = MONTH(GETDATE())
END
GO
--количество заказчиков
CREATE PROCEDURE [dbo].CustomerCount
AS
DECLARE @количество INT -- объявляет переменную типа INT
DECLARE @наименование CHAR(200)
DECLARE @сообщение CHAR (200) -- объявляет переменную типа CHAR
SET @количество = (SELECT COUNT(УНП) FROM Заказчики) -- устанавливает количество
IF @количество < 1000
BEGIN
SET @сообщение = 'Количество заказчиков менее 1000'
SELECT @сообщение
END
ELSE
BEGIN
SET @сообщение = 'Количество заказчиков ' + str(@количество)
SELECT @сообщение
END
GO
-- просроченный договора
CREATE PROCEDURE [dbo].SrokDogMonth
AS
BEGIN
SELECT Договора.номер_договора, Договора.дата_договора, Договора.дата_начала,
Договора.дата_исполнения,Договора.срок_исполнения,
dbo.DateDiffSrok(Договора.дата_начала,Договора.дата_исполнения,Договора.срок_исполнения) AS Просрочено,
Отделы.отдел, Сотрудники.ФИО
FROM Сотрудники INNER JOIN
Отделы ON Сотрудники.in_rn = Отделы.in_rn INNER JOIN
Договора ON Отделы.номер_отдела = Договора.номер_отдела
WHERE dbo.DateDiffSrok(Договора.дата_начала,Договора.дата_исполнения,Договора.срок_исполнения) >0
END
GO
-- сумма по договорам за текущий месяц
CREATE PROCEDURE [dbo].SumDogMonth
AS
BEGIN
SELECT Sum(сумма_договора)
FROM Договора
WHERE MONTH(дата_договора) = MONTH(GETDATE())
END
GO
-- Definition for stored procedure Договора_DH1795_1SJOURN_конверт :
GO
CREATE PROCEDURE [dbo].Договора_DH1795_1SJOURN_конверт
AS
BEGIN
DECLARE @date_start datetime
SET @date_start =CAST ('20150201' AS datetime) --начало даты конвертации
INSERT INTO Договора( сумма_договора, предоплата_процент, дата_начала, описание_работ, дата_договора,
номер_договора, id_customer)
SELECT SP1801, dbo.ConvPr(SP1826), dbo.ConvDate(DATE_TIME_IDDOC), SP1799,
dbo.ConvDate(DATE_TIME_IDDOC), id_customer
FROM
_1SJOURN INNER JOIN (DH1795 INNER JOIN Заказчики ON DH1795.SP1798=Заказчики.ID)
ON DH1795.IDDOC=_1SJOURN.IDDOC
WHERE (dbo.ConvDate(DATE_TIME_IDDOC) > @date_start)
END
GO
CREATE PROCEDURE [dbo].Заказчики_SP1806_конверт
AS
BEGIN
INSERT INTO Заказчики( наименование_полное, руководитель_ип, адрес_почта, наименование_краткое,
kod, руководитель_рп, счет_в_банке, УНП, ОКПО, основание, ID)
SELECT SP1810, SP1811, SP1808, DESCR, CODE, SP1812, SP1809, SP1828, SP1829, SP1813, ID
FROM SC1806
END
GO
--курсор для поиска повторных записей в справочнике заказчиков (по УНП)
CREATE PROCEDURE [dbo].Заказчики_УНП_повтор_cur
AS
BEGIN
DECLARE @unp VARCHAR(10),@unp_tmp VARCHAR(10), @customer VARCHAR(200), @message VARCHAR(250)
SET @unp_tmp=''
PRINT ' Список повторных записей о заказчиках'
DECLARE customer_cursor CURSOR LOCAL FOR SELECT УНП,Наименование_краткое
FROM [Заказчики]
WHERE УНП<>'' --унп=NULL
ORDER BY УНП
OPEN customer_cursor
FETCH NEXT FROM customer_cursor INTO @unp, @customer
WHILE @@FETCH_STATUS=0
BEGIN
IF @unp=@unp_tmp
SELECT @message='повтор УНП '+ @unp + @customer
--ELSE SELECT @message='---------- '+ @unp + @customer
PRINT @message
SET @unp_tmp=@unp
--переход к следующему клиенту--
FETCH NEXT FROM customer_cursor INTO @unp, @customer
END
CLOSE customer_cursor
DEALLOCATE customer_cursor
END
GO
--курсор для поиска и удаления повторных записей в справочнике заказчиков (по УНП)
CREATE PROCEDURE [dbo].Заказчики_УНП_чистка_cur
AS
BEGIN
DECLARE @unp VARCHAR(10),@unp_tmp VARCHAR(10)
DECLARE @id_customer INT, @id_customer_tmp INT, @message VARCHAR(250)
DECLARE @count INT
SET @unp_tmp=''
--SET @id_customer_tmp=0
PRINT ' Список заказчиков'
DECLARE customer_cursor CURSOR LOCAL FOR SELECT УНП,id_customer
FROM [Заказчики]
WHERE УНП<>'' --унп=NULL
ORDER BY УНП
OPEN customer_cursor
FETCH NEXT FROM customer_cursor INTO @unp, @id_customer
WHILE @@FETCH_STATUS=0
BEGIN
--ищем заказчика в базе договоров
SET @count = (SELECT COUNT(id_customer) FROM Договора WHERE id_customer=@id_customer)
IF @unp=@unp_tmp AND @count=0 --повтор найден и нет в Договорах
BEGIN
SET @message='повтор УНП, удалена запись '+ @unp + STR(@id_customer)
PRINT @message
DELETE FROM Заказчики WHERE id_customer=@id_customer
END
IF @unp=@unp_tmp AND @count>0 --повтор найден, удаляется отсутствующая в Договорах
BEGIN
SET @message='повтор УНП, удалена повторная запись о Заказчике отсутствующая в Договорах '+ @unp + STR(@id_customer)
PRINT @message
DELETE FROM Заказчики WHERE id_customer=@id_customer_tmp
END
SET @unp_tmp=@unp
SET @id_customer_tmp=@id_customer
--переход к следующему клиенту--
FETCH NEXT FROM customer_cursor
INTO @unp, @id_customer
END
CLOSE customer_cursor
DEALLOCATE customer_cursor
--Для контроля достижения конца курсора рекомендуется применять функцию: @@FETCH_STATUS
END
GO
--курсор для подсчета прибыли от деятельности отделов организации
CREATE PROCEDURE [dbo].Отделы_Прибыль_cur
AS
BEGIN
DECLARE @сумма money, @итого money, @номер_отдела int, @отдел varchar(50)
DECLARE TopOtdel CURSOR LOCAL FOR SELECT номер_отдела, отдел
FROM Отделы ORDER BY номер_отдела
SET @итого=0
PRINT 'Заключено договоров на сумму:'
OPEN TopOtdel
FETCH NEXT FROM TopOtdel INTO @номер_отдела, @отдел
WHILE @@FETCH_STATUS=0
BEGIN
SET @сумма= dbo.BigMoney_cur(@номер_отдела)
IF @номер_отдела <> 0 AND @сумма<> 0
PRINT STR(@сумма)+' - '+ @отдел
SET @итого=@итого+@сумма
FETCH NEXT FROM TopOtdel INTO @номер_отдела, @отдел
END
PRINT '----------------------------------------'
PRINT 'ИТОГО по предприятию:'+STR(@итого)
PRINT '('+dbo.MoneyWords(@итого)+')'
CLOSE TopOtdel
DEALLOCATE TopOtdel
END
GO
-- Definition for stored procedure Услуги_Рост_cur :
GO
CREATE PROCEDURE [dbo].Услуги_Рост_cur
AS
BEGIN
DECLARE @id_service int, @услуга varchar(250), @message varchar(250)
DECLARE @sum_prev money, @sum_cur money
DECLARE Usluga CURSOR LOCAL FOR
SELECT id_service, SUM(сумма_договора)AS sum_cur FROM Договора
WHERE YEAR(дата_договора)= YEAR (GETDATE()) --текущий год
GROUP BY id_service
PRINT 'Выполнение по услуге к предыдущему году:'
PRINT 'Прошлый год Текущий год Проц.выполнения Услуга:'
OPEN Usluga
FETCH NEXT FROM Usluga INTO @id_service, @sum_cur
WHILE @@FETCH_STATUS=0
BEGIN
--сумма прошлого года по соответствующей услуге
SET @sum_prev = (SELECT SUM(сумма_договора)FROM Договора
WHERE YEAR(дата_договора)= (YEAR (GETDATE())-1) AND id_service=@id_service
GROUP BY id_service)
--находим название услуги по ID
SET @услуга= (SELECT услуга FROM Услуги WHERE id_service=@id_service)
IF (@sum_prev IS NOT NULL)
SET @message= str(@sum_prev)+' '+str(@sum_cur)+' '
+ str((@sum_cur/@sum_prev)*100)+'% '+ @услуга
ELSE
SET @message= '------'+' '+str(@sum_cur)+' ' +' ------ '+ @услуга
PRINT @message
FETCH NEXT FROM Usluga INTO @id_service, @sum_cur
END
CLOSE usluga
DEALLOCATE usluga
END
GO
-- Definition for indices :
ALTER TABLE [dbo].[Услуги]
ADD CONSTRAINT [PK_Услуги]
PRIMARY KEY CLUSTERED ([id_service])
WITH (
PAD_INDEX = OFF,
IGNORE_DUP_KEY = OFF,
STATISTICS_NORECOMPUTE = OFF,
ALLOW_ROW_LOCKS = ON,
ALLOW_PAGE_LOCKS = ON)
ON [PRIMARY]
GO
ALTER TABLE [dbo].[Заказчики]
ADD CONSTRAINT [Заказчики_pk]
PRIMARY KEY CLUSTERED ([id_customer])
WITH (
PAD_INDEX = OFF,
IGNORE_DUP_KEY = OFF,
STATISTICS_NORECOMPUTE = OFF,
ALLOW_ROW_LOCKS = ON,
ALLOW_PAGE_LOCKS = ON)
ON [PRIMARY]
GO
ALTER TABLE [dbo].[Сотрудники]
ADD CONSTRAINT [PK_Сотрудники]
PRIMARY KEY CLUSTERED ([in_rn])
WITH (
PAD_INDEX = OFF,
IGNORE_DUP_KEY = OFF,
STATISTICS_NORECOMPUTE = OFF,
ALLOW_ROW_LOCKS = ON,
ALLOW_PAGE_LOCKS = ON)
ON [PRIMARY]
GO
ALTER TABLE [dbo].[Подразделения]
ADD CONSTRAINT [Подразделения_pk]
PRIMARY KEY CLUSTERED ([номер_подразделения])
WITH (
PAD_INDEX = OFF,
IGNORE_DUP_KEY = OFF,
STATISTICS_NORECOMPUTE = OFF,
ALLOW_ROW_LOCKS = ON,
ALLOW_PAGE_LOCKS = ON)
ON [PRIMARY]
GO
ALTER TABLE [dbo].[Подразделения]
ADD CONSTRAINT [Подразделения_uq]
UNIQUE NONCLUSTERED ([номер_подразделения])
WITH (
PAD_INDEX = OFF,
IGNORE_DUP_KEY = OFF,
STATISTICS_NORECOMPUTE = OFF,
ALLOW_ROW_LOCKS = ON,
ALLOW_PAGE_LOCKS = ON)
ON [PRIMARY]
GO
ALTER TABLE [dbo].[Отделы]
ADD CONSTRAINT [Отделы_pk]
PRIMARY KEY CLUSTERED ([номер_отдела])
WITH (
PAD_INDEX = OFF,
IGNORE_DUP_KEY = OFF,
STATISTICS_NORECOMPUTE = OFF,
ALLOW_ROW_LOCKS = ON,
ALLOW_PAGE_LOCKS = ON)
ON [PRIMARY]
GO
ALTER TABLE [dbo].[Отделы]
ADD CONSTRAINT [Отделы_uq]
UNIQUE NONCLUSTERED ([номер_отдела])
WITH (
PAD_INDEX = OFF,
IGNORE_DUP_KEY = OFF,
STATISTICS_NORECOMPUTE = OFF,
ALLOW_ROW_LOCKS = ON,
ALLOW_PAGE_LOCKS = ON)
ON [PRIMARY]
GO
ALTER TABLE [dbo].[Отделы]
ADD CONSTRAINT [Отделы_pk]
PRIMARY KEY CLUSTERED ([номер_отдела])
WITH (
PAD_INDEX = OFF,
IGNORE_DUP_KEY = OFF,
STATISTICS_NORECOMPUTE = OFF,
ALLOW_ROW_LOCKS = ON,
ALLOW_PAGE_LOCKS = ON)
ON [PRIMARY]
GO
ALTER TABLE [dbo].[Отделы]
ADD CONSTRAINT [Отделы_uq]
UNIQUE NONCLUSTERED ([номер_отдела])
WITH (
PAD_INDEX = OFF,
IGNORE_DUP_KEY = OFF,
STATISTICS_NORECOMPUTE = OFF,
ALLOW_ROW_LOCKS = ON,
ALLOW_PAGE_LOCKS = ON)
ON [PRIMARY]
GO
ALTER TABLE [dbo].[Шаблоны_договоров]
ADD CONSTRAINT [PK_Шаблоны_договоров]
PRIMARY KEY CLUSTERED ([id_pattern])
WITH (
PAD_INDEX = OFF,
IGNORE_DUP_KEY = OFF,
STATISTICS_NORECOMPUTE = OFF,
ALLOW_ROW_LOCKS = ON,
ALLOW_PAGE_LOCKS = ON)
ON [PRIMARY]
GO
ALTER TABLE [dbo].[Префикс]
ADD CONSTRAINT [PK_Префикс]
PRIMARY KEY CLUSTERED ([id_ntu])
WITH (
PAD_INDEX = OFF,
IGNORE_DUP_KEY = OFF,
STATISTICS_NORECOMPUTE = OFF,
ALLOW_ROW_LOCKS = ON,
ALLOW_PAGE_LOCKS = ON)
ON [PRIMARY]
GO
ALTER TABLE [dbo].[Префикс]
ADD CONSTRAINT [PK_Префикс]
PRIMARY KEY CLUSTERED ([id_ntu])
WITH (
PAD_INDEX = OFF,
IGNORE_DUP_KEY = OFF,
STATISTICS_NORECOMPUTE = OFF,
ALLOW_ROW_LOCKS = ON,
ALLOW_PAGE_LOCKS = ON)
ON [PRIMARY]
GO
ALTER TABLE [dbo].[Нормы_закона]
ADD CONSTRAINT [Нормы_закона_pk]
PRIMARY KEY CLUSTERED ([id_norma])
WITH (
PAD_INDEX = OFF,
IGNORE_DUP_KEY = OFF,
STATISTICS_NORECOMPUTE = OFF,
ALLOW_ROW_LOCKS = ON,
ALLOW_PAGE_LOCKS = ON)
ON [PRIMARY]
GO
ALTER TABLE [dbo].[Районы]
ADD CONSTRAINT [PK_Районы]
PRIMARY KEY CLUSTERED ([id_admdel])
WITH (
PAD_INDEX = OFF,
IGNORE_DUP_KEY = OFF,
STATISTICS_NORECOMPUTE = OFF,
ALLOW_ROW_LOCKS = ON,
ALLOW_PAGE_LOCKS = ON)
ON [PRIMARY]
GO
-- Definition for foreign keys :
ALTER TABLE [dbo].[Отделы]
ADD CONSTRAINT [Отделы_fk] FOREIGN KEY ([in_rn])
REFERENCES [dbo].[Сотрудники] ([in_rn])
ON UPDATE CASCADE
ON DELETE NO ACTION
GO
ALTER TABLE [dbo].[Отделы]
ADD CONSTRAINT [Отделы_fk] FOREIGN KEY ([in_rn])
REFERENCES [dbo].[Сотрудники] ([in_rn])
ON UPDATE CASCADE
ON DELETE NO ACTION
GO
-- Definition for triggers :
GO
CREATE TRIGGER [dbo].[Подразделения_trd] ON [dbo].[Подразделения]
WITH EXECUTE AS CALLER
FOR DELETE
AS
--запрет удаления подразделений
IF SYSTEM_USER <> 'Администратор'
BEGIN
PRINT 'ВНИМАНИЕ!!! Удаление подразделений из справочника разрешено только АДМИНИСТРАТОРу'
--сообщения о неудаче операции
ROLLBACK TRANSACTION
END
GO
CREATE TRIGGER [dbo].[Отделы_trd] ON [dbo].[Отделы]
WITH EXECUTE AS CALLER
FOR DELETE
AS
--запрет удаления отделов
IF SYSTEM_USER <> 'Администратор'
BEGIN
PRINT 'ВНИМАНИЕ!!! Удаление отделов из справочника разрешено только АДМИНИСТРАТОРу'
--сообщения о неудаче операции
ROLLBACK TRANSACTION
END
GO
CREATE TRIGGER [dbo].[Отделы_trd] ON [dbo].[Отделы]
WITH EXECUTE AS CALLER
FOR DELETE
AS
--запрет удаления отделов
IF SYSTEM_USER <> 'Администратор'
BEGIN
PRINT 'ВНИМАНИЕ!!! Удаление отделов из справочника разрешено только АДМИНИСТРАТОРу'
--сообщения о неудаче операции
ROLLBACK TRANSACTION
END
GO
CREATE TRIGGER [dbo].[Префикс_trud] ON [dbo].[Префикс]
WITH EXECUTE AS CALLER
FOR UPDATE, DELETE
AS
--запрет удаления и изменения префиксов улиц
IF SYSTEM_USER <> 'Администратор'
BEGIN
PRINT 'ВНИМАНИЕ!!! Удаление и изменение префиксов улиц в справочнике разрешено
только АДМИНИСТРАТОРу'
--сообщения о неудаче операции
ROLLBACK TRANSACTION
END
GO
CREATE TRIGGER [dbo].[Префикс_trud] ON [dbo].[Префикс]
WITH EXECUTE AS CALLER
FOR UPDATE, DELETE
AS
--запрет удаления и изменения префиксов улиц
IF SYSTEM_USER <> 'Администратор'
BEGIN
PRINT 'ВНИМАНИЕ!!! Удаление и изменение префиксов улиц в справочнике разрешено
только АДМИНИСТРАТОРу'
--сообщения о неудаче операции
ROLLBACK TRANSACTION
END
GO
-- Role Membership
EXEC sp_addrolemember 'db_datareader', 'psb'
GO
EXEC sp_addrolemember 'db_datawriter', 'psb'
GO
EXEC sp_addrolemember 'db_owner', 'Администратор'
GO
-- Definition for user psb :
CREATE USER [psb]
WITHOUT LOGIN
WITH DEFAULT_SCHEMA = [db_owner]
GO
-- Definition for user Администратор :
CREATE USER [Администратор]
WITHOUT LOGIN
WITH DEFAULT_SCHEMA = [db_owner]
GO
-- Definition for user Специалист :
CREATE USER [Специалист]
WITHOUT LOGIN
WITH DEFAULT_SCHEMA = [db_datawriter]
GO
5. РЕЗУЛЬТАТ ТЕСТИРОВАНИЯ ИНФОРМАЦИОННОЙ СИСТЕМЫ
Для нормальной работы системы необходимо 256 Мбайт оперативной памяти, Windows NT/2000/XP и выше, MS SQL Server 2000.
В данном курсовом проекте разработана база данных которая хранится на SQL сервере.
Корректность выполнения процедур, функций, построение представлений проверена средствами среды SQL Server Management Studio.
После тестирования получили результаты:
- Информационная система поддерживает многопользовательский режим.
- Тестирование процедур, функций, тригеров, курсоров, представлений прошло успешно.
ЗАКЛЮЧЕНИЕ
Информационное общество - общество, в котором большинство работающих занято производством, хранением, переработкой и реализацией информации во всех ее формах.
Прогресс, достигнутый за последние несколько лет во всех аспектах вычислительной техники, включая теорию, технологию и приложения, привели к значительному расширению области применения компьютеров и росту числа их пользователей. Существенной частью современного общества являются разнообразные системы доступа и хранения информации, которые являются неотъемлемой составляющей современного научно-технического прогресса. Существует много веских причин перевода существующей информации на компьютерную основу, т.к. более быстрая обработка данных и централизация их хранения с использованием клиент/серверных технологий позволяют сберечь значительные средства, а главное и время для получения необходимой информации, а также упрощает доступ и ведение.
Современные СУБД - многопользовательские системы управления базой данных, которые специализируется на управлении массивом информации одним или множеством одновременно работающих пользователей.
Во время выполнения курсовой работы было разработано многопользовательская информационная система «Автоматизация оказания услуг проектным специализированным бюро».
При создании БД использовались средство моделирования баз данных All Fusion Data Modeler 7.2, средство моделирования бизнес-процессов All Fusion Process Modeler 7.3, сервер баз данных Microsoft SQL server 2000, язык баз данных T-SQL.
Все пункты курсового задания были выполнены, разработанная система выполняет поставленную перед ним задачу.
СПИСОК ИСПОЛЬЗОВАННЫХ ЛИТЕРАТУРНЫХ ИСТОЧНИКОВ
1. Microsoft SQL Server 7 для профессионалов. - СПб.: Питер, 2000. - 896 с.
2. Алан Бьюли, Энди Оппель. Изучаем SQL. - М.:Символ, 2007. - 312 с.
3. Жилинский А. Самоучитель Microsoft SQL Server 2005. - СПб:BHV, 2004. - 224 с.
4. Кишори Бхамидипати. SQL. Справочник программиста.-М.:Эком, 2003. - 304 с.
5. Конспект лекций «Базы данных»
6. Литвин П., Гетц К.,Гунделой М. Разработка настольных приложений в Access 2002. Для профессионалов. - СПб.:Питер; К.: Издательская группа BHV, 2002. - 1008 с.
7. Марков А.С., Лисовский К.Ю. «Базы данных. Введение в теорию и методологию». - М.:Финансы и статистика, 2006. - 512 с.
8. Роберт Виейра. Программирование баз данных Microsoft SQL Server 2005. Базовый курс. - М.:Вильямс, 2003. - 848 с.
9. Уилтон П., Колби Дж. SQL для начинающих. - М.: Вильямс, 2006. - 496 с.
10. Фленов М. Transact SQL в подлиннике. - СПб:BHV, 2006. - 576 с.
11. Практическое руководство по SQL. - М.: Вильямс, 2002. - 352 с.
12. Моисеенко С. SQL. Задачи и решения. СПб.: Питер, 2006. - 256 с.
Размещено на Allbest.ru
...Подобные документы
Современные базы данных и систем управления ими. Методы построения их приложений. Разработка СУБД на примере "Бюро находок", обеспечивающей пользователю возможности по пополнению, редактированию, просмотру и анализу базы данных. Реализация БД в MS Access.
курсовая работа [3,4 M], добавлен 19.06.2012Концептуальная модель базы данных "Бюро по трудоустройству". Разработка информационного и программного обеспечения объектов автоматизации. Реализация базы данных в СУБД MsAccess. Запросы к базе данных. Таблицы, отчеты и макросы. Интерфейс пользователя.
курсовая работа [5,2 M], добавлен 30.05.2016Автоматизация расчетов выполнения весенне-полевых работ в сельском хозяйстве средствами Системы управления базы данных. Структура входной и выходной информации. Блок-схема алгоритма решения задачи. Краткое описание программного средства обработки данных.
контрольная работа [58,8 K], добавлен 07.04.2014Использование автоматизированных баз данных в деятельности бюро по найму - способ облегчения деятельности сотрудников и повышения качества обслуживания клиентов. Разработка пользовательского интерфейса главной кнопочной формы информационной системы.
курсовая работа [1,4 M], добавлен 25.04.2019Создание совершенной автоматизированной системы формирования, учета и фиксирования выполнения заявок. Формализация задачи, построение структуры таблиц для хранения информации, схемы их взаимосвязей и описания алгоритмов обработки. Описание алгоритма.
курсовая работа [2,2 M], добавлен 30.06.2014Предметная область оперативного учета и расчета сметных работ. Автоматизация учета поступления и продажи товаров, комплектующих. Создание программного модуля для автоматизации раскроя профилей и заполнения на производстве, группировки информации.
дипломная работа [3,1 M], добавлен 29.08.2014Разработка автоматизированной информационной системы учета заказов на выполнение работ и формированию отчетной документации Бюро технической инвентаризации (БТИ). Системный анализ и схема документооборота. Разработка инфологической модели данных.
дипломная работа [603,9 K], добавлен 29.08.2014Создание автоматизированной системы мониторинга состояния аппаратных средств компьютерных сетей на основе протокола SNMP в среде программирования С++Builder. Описание реляционной базы данных и ее визуальное представление. Разработка диаграммы классов.
отчет по практике [2,2 M], добавлен 05.01.2016Понятие и свойства алгоритма. Способы его описания. Основные виды сортировок. Организация межтабличных связей для автоматического формирования счета, выставляемого клиенту для оплаты выполняемых работ с использованием программы Microsoft Office Excel.
курсовая работа [190,4 K], добавлен 07.07.2013Роль информационных технологий в обществе. Краткая природно-климатическая характеристика территории хозяйства ЗАО "Новорождественское", информационный анализ входной информации. Автоматизация уборочных работ, формирование массивов, запросов и отчетов.
курсовая работа [718,4 K], добавлен 17.11.2012Склад ОАО "Ориенбанк", его специфика и структура. Описание структуры базы данных складского учета для предприятия. Разработка пользовательского интерфейса программы. Инструкция к применению базы данных. Автоматизация операций и учета средств банка.
курсовая работа [4,7 M], добавлен 26.02.2010Реализация в автосервисах информационной справочной системы для организации учета распределения работ и ведения учета их стоимости. Анализ механизма предоставления услуг. Инфологическое и даталогическое проектирование. Выявление сущностей базы данных.
курсовая работа [1020,5 K], добавлен 24.01.2009Разработка инфологической и даталогической моделей. Особенности реализации базы данных оказания платных образовательных услуг в СУБД Visual Foxpro и Interbase. Описание и обоснование набора введенных индексов, правил поддержки ссылочной целостности.
курсовая работа [291,3 K], добавлен 21.05.2013Автоматизация торговли, база данных. Модели представления данных, СУБД Microsoft Access. Инструменты для работы с данными в Access. Назначение проектируемой базы данных для компьютерного магазина. Основные функции, решаемые информационной системой.
курсовая работа [2,9 M], добавлен 15.11.2011Анализ тенденций развития информационных технологий. Назначение и цели применения систем автоматизированного проектирования на основе системного подхода. Методы обеспечения автоматизации выполнения проектных работ на примере ЗАО "ПКП "Теплый дом".
курсовая работа [210,0 K], добавлен 11.09.2010Хранение информации базы данных в таблицах. Полная информация о клиентах, заказах, о кодах и наименованиях услуг, о текущих ценах на услуги и о должностях фотоателье. Основные формы по оформлению заказов. Создание печатных копий из базы данных.
курсовая работа [1,6 M], добавлен 15.12.2010Методика, используемые инструменты и приемы разработки реляционной базы данных и программного обеспечения для автоматизации учета и контроля работ на объектах фирмы, получения оперативной и объективной информации по основным показателям ее деятельности.
курсовая работа [2,5 M], добавлен 10.06.2013Разработка автоматизированной информационной системы для учета и контроля выполнения ремонтных работ, и предоставления услуг по разработке программного обеспечения компании "МегионСофтОйл", разработка алгоритмов приложений программной системы и модулей.
дипломная работа [5,3 M], добавлен 29.06.2012Сетевые информационные технологии, базирующиеся на архитектуре клиент-сервер. Автоматизация продажи билетов на пассажирские поезда. Функциональность базы данных, предоставление создателям информации о предметной области. Интерфейс, программные модули.
курсовая работа [1,8 M], добавлен 20.03.2009Анализ аналогов-ресурсов системы "Бюро регистрации несчастных случаев", критерии выбор задач, подлежащих автоматизации. Проектирование автоматизированного рабочего места сотрудника оперативного учета. Разработка модели базы с использованием CASE-средств.
дипломная работа [7,8 M], добавлен 21.01.2012