Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 2 3 [4] 5 6   вперед  Ctrl      все
 Re: Запросы на подсчет должностей  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6801
fantanol,

DATEDIFF(day, start,end)<=21 но 21 день ограничивать странно и скорее всего не правильно
18 май 17, 14:29    [20493062]     Ответить | Цитировать Сообщить модератору
 Re: Запросы на подсчет должностей  [new]
Руслан Дамирович
Member

Откуда: Резиновая нерезиновая
Сообщений: 940
TaPaK
fantanol,
DATEDIFF(day, start,end)<=21 но 21 день ограничивать странно и скорее всего не правильно

А противозаконность такого ограничения согласно ТК РФ не беспокоит?
18 май 17, 14:36    [20493073]     Ответить | Цитировать Сообщить модератору
 Re: Запросы на подсчет должностей  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6801
Руслан Дамирович
TaPaK
fantanol,
DATEDIFF(day, start,end)<=21 но 21 день ограничивать странно и скорее всего не правильно

А противозаконность такого ограничения согласно ТК РФ не беспокоит?

утомляешь, одно другому не мешает, но 21 это не верно
18 май 17, 14:40    [20493083]     Ответить | Цитировать Сообщить модератору
 Re: Запросы на подсчет должностей  [new]
iiyama
Member

Откуда:
Сообщений: 642
2TC
Я не против триггеров(где они нужны), но Вы не думаете, что бизнес слой лучше вынести из триггеров, хотя бы в процедуры.
А то у вас сегодня добавляется 21 день, завтра отпуск по уходу за ребенком, послезавтра экспаты и тд ...
18 май 17, 15:43    [20493286]     Ответить | Цитировать Сообщить модератору
 Re: Запросы на подсчет должностей  [new]
rnk
Member

Откуда:
Сообщений: 126
Руслан Дамирович
TaPaK
fantanol,
DATEDIFF(day, start,end)<=21 но 21 день ограничивать странно и скорее всего не правильно

А противозаконность такого ограничения согласно ТК РФ не беспокоит?

Если будет предусмотрена возможность вручную принудительно проставить >21 дня, то всё законно. А может, тут вообще считаются отпуска симов из The Sims, к которым ТК РФ неприменим )
18 май 17, 15:49    [20493311]     Ответить | Цитировать Сообщить модератору
 Re: Запросы на подсчет должностей  [new]
fantanol
Member

Откуда:
Сообщений: 191
У меня не получается разобраться,куда подставить эту строку

DATEDIFF(day, start,end)<=21


p.s 21 день я для примера сказал)



rnk
Если будет предусмотрена возможность вручную принудительно проставить >21 дня, то всё законно. А может, тут вообще считаются отпуска симов из The Sims, к которым ТК РФ неприменим )


Какие варианты есть варианты,чтобы это реализовать?
18 май 17, 15:52    [20493325]     Ответить | Цитировать Сообщить модератору
 Re: Запросы на подсчет должностей  [new]
rnk
Member

Откуда:
Сообщений: 126
fantanol
Точку с запятой убрал и заработало.

«...о необходимости которой все время говорили большевики...»

Такого рода ошибки — самые незаметные, а потому неприятные. Иногда ошибку в одном символе по часу ищешь (не там, разумеется).
18 май 17, 15:54    [20493336]     Ответить | Цитировать Сообщить модератору
 Re: Запросы на подсчет должностей  [new]
rnk
Member

Откуда:
Сообщений: 126
rnk
Если будет предусмотрена возможность вручную принудительно проставить >21 дня, то всё законно. А может, тут вообще считаются отпуска симов из The Sims, к которым ТК РФ неприменим )


Какие варианты есть варианты,чтобы это реализовать?[/quot]
Можно дизаблить триггер при принудительном апдейте. Но мудрый iiyama прав, триггеры отдельно, бизнес-логика отдельно.
18 май 17, 15:58    [20493352]     Ответить | Цитировать Сообщить модератору
 Re: Запросы на подсчет должностей  [new]
fantanol
Member

Откуда:
Сообщений: 191
rnk
rnk
Если будет предусмотрена возможность вручную принудительно проставить >21 дня, то всё законно. А может, тут вообще считаются отпуска симов из The Sims, к которым ТК РФ неприменим )


Какие варианты есть варианты,чтобы это реализовать?

Можно дизаблить триггер при принудительном апдейте. Но мудрый iiyama прав, триггеры отдельно, бизнес-логика отдельно.[/quot]
Сможете добавить отмену при апдейте в мой триггер? Чтобы не заморачиваться с созданием процедур
18 май 17, 16:07    [20493382]     Ответить | Цитировать Сообщить модератору
 Re: Запросы на подсчет должностей  [new]
londinium
Member

Откуда: Киев
Сообщений: 1167
fantanol,

IF OBJECT_ID(N'DBO.DATES',N'TR')IS NOT NULL
  DROP TRIGGER DBO.DATES;
GO

create TRIGGER dates ON Отпуск 

after insert 

AS    ---join - inserted.[Сотрудник] = Сотрудник.[id_Сотрудник](ЭТО ВООБЩЕ ЧТО??)
begin
/*
IF EXISTS (SELECT * FROM inserted WHERE Дата_начала <= Дата_приема ) BEGIN
RAISERROR (N'Дата начала не может быть раньше даты приема',16,1);
*/
IF(EXISTS
       (SELECT 1 FROM INSERTED I JOIN [Сотрудник]S ON I.[Сотрудник]=S.[id_Сотрудник]
            WHERE I.[Дата_начала]<=S.[Дата_приема] OR DATEDIFF(DAY, I.start,I.end)<=21)))
    RAISERROR (N'Дата начала не может быть раньше даты приема',16,1);
return;
end;
END
GO
18 май 17, 16:11    [20493393]     Ответить | Цитировать Сообщить модератору
 Re: Запросы на подсчет должностей  [new]
fantanol
Member

Откуда:
Сообщений: 191
londinium
fantanol,

IF OBJECT_ID(N'DBO.DATES',N'TR')IS NOT NULL
  DROP TRIGGER DBO.DATES;
GO

create TRIGGER dates ON Отпуск 

after insert 

AS    ---join - inserted.[Сотрудник] = Сотрудник.[id_Сотрудник](ЭТО ВООБЩЕ ЧТО??)
begin
/*
IF EXISTS (SELECT * FROM inserted WHERE Дата_начала <= Дата_приема ) BEGIN
RAISERROR (N'Дата начала не может быть раньше даты приема',16,1);
*/
IF(EXISTS
       (SELECT 1 FROM INSERTED I JOIN [Сотрудник]S ON I.[Сотрудник]=S.[id_Сотрудник]
            WHERE I.[Дата_начала]<=S.[Дата_приема] OR DATEDIFF(DAY, I.start,I.end)<=21)))
    RAISERROR (N'Дата начала не может быть раньше даты приема',16,1);
return;
end;
END
GO


Спасибо что помогли. Подставил я данные под себя и исправил на это >21))
Теперь исправно работает)
Как можно прописать исключение для этого числа?
18 май 17, 17:35    [20493743]     Ответить | Цитировать Сообщить модератору
 Re: Запросы на подсчет должностей  [new]
iiyama
Member

Откуда:
Сообщений: 642
fantanol,
1.
RAISERROR (N'Дата начала не может быть раньше даты приема или продолжительность отпуска превышает лимит или еще что-то',16,1);

2. re> Как можно прописать исключение для этого числа?
Если Вы имеете ввиду сделать произвольное число, то видимо завести таблицу параметров и вытаскивать оттуда в переменную
18 май 17, 17:39    [20493762]     Ответить | Цитировать Сообщить модератору
 Re: Запросы на подсчет должностей  [new]
londinium
Member

Откуда: Киев
Сообщений: 1167
fantanol,

автор
Как можно прописать исключение для этого числа?

можно написать хранимую процедуру на добавление отпуска, тем самым избавиться от триггера, а уж процедуре обработать как душа пожелает.
18 май 17, 17:40    [20493771]     Ответить | Цитировать Сообщить модератору
 Re: Запросы на подсчет должностей  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6801
londinium
fantanol,

автор
Как можно прописать исключение для этого числа?

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

а в триггере душа не пожелает?
18 май 17, 17:42    [20493773]     Ответить | Цитировать Сообщить модератору
 Re: Запросы на подсчет должностей  [new]
rnk
Member

Откуда:
Сообщений: 126
fantanol
Спасибо что помогли. Подставил я данные под себя и исправил на это >21))
Теперь исправно работает)
Как можно прописать исключение для этого числа?

То етсь нужно обеспечить возможность принудительного выставления разницы > 21? Я бы сделал дополнительное битовое поле "Срок_принудительно", с доступом только у большого начальника, и переписал бы триггер:
IF OBJECT_ID(N'DBO.DATES',N'TR')IS NOT NULL
  DROP TRIGGER DBO.DATES;
GO

create TRIGGER dates ON Отпуск 

after insert 

AS    ---join - inserted.[Сотрудник] = Сотрудник.[id_Сотрудник](ЭТО ВООБЩЕ ЧТО??)
begin
/*
IF EXISTS (SELECT * FROM inserted WHERE Дата_начала <= Дата_приема ) BEGIN
RAISERROR (N'Дата начала не может быть раньше даты приема',16,1);
*/
IF EXISTS
       (SELECT 1 FROM INSERTED I JOIN [Сотрудник]S ON I.[Сотрудник]=S.[id_Сотрудник]
            WHERE I.[Дата_начала]<=S.[Дата_приема])
    RAISERROR (N'Дата начала не может быть раньше даты приема',16,1);
IF EXISTS
       (SELECT 1 FROM INSERTED I JOIN [Сотрудник]S ON I.[Сотрудник]=S.[id_Сотрудник]
            WHERE DATEDIFF(DAY, I.[start],I.[end])<=21 AND I.[Срок_принудительно]=0)
    RAISERROR (N'Утвердить отпуск сроком более 21 суток может только босс',16,1);
return;
end;
GO
18 май 17, 17:50    [20493802]     Ответить | Цитировать Сообщить модератору
 Re: Запросы на подсчет должностей  [new]
fantanol
Member

Откуда:
Сообщений: 191
iiyama
fantanol,
1.
RAISERROR (N'Дата начала не может быть раньше даты приема или продолжительность отпуска превышает лимит или еще что-то',16,1);

2. re> Как можно прописать исключение для этого числа?
Если Вы имеете ввиду сделать произвольное число, то видимо завести таблицу параметров и вытаскивать оттуда в переменную


Я говорил про первый вариант) Ваше решение меня вполне устроило. Спасибо
С отпусками у меня все.

Возвращаясь к началу темы. Как можно ограничить количество начальников и замов на отдел . Другие должности я не рассматриваю.
Т.е при добавлении сотрудника,нельзя назначить еще одного человека на должность начальника если их лимит исчерпан.
Предполагаю что это нужно работать со штатным расписанием,но может и ошибаюсь.
18 май 17, 17:53    [20493808]     Ответить | Цитировать Сообщить модератору
 Re: Запросы на подсчет должностей  [new]
londinium
Member

Откуда: Киев
Сообщений: 1167
автор
а в триггере душа не пожелает?

Ну почему же: еще и как пожелает, но у него потом окажется, что Петровичу можно не более 10 дней отпуска, тете Тане - две недели, а фюрер "..в отпуск едет когда хочет"
18 май 17, 17:59    [20493821]     Ответить | Цитировать Сообщить модератору
 Re: Запросы на подсчет должностей  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6801
londinium
автор
а в триггере душа не пожелает?

Ну почему же: еще и как пожелает, но у него потом окажется, что Петровичу можно не более 10 дней отпуска, тете Тане - две недели, а фюрер "..в отпуск едет когда хочет"

и?
18 май 17, 18:01    [20493830]     Ответить | Цитировать Сообщить модератору
 Re: Запросы на подсчет должностей  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31339
fantanol
Как можно ограничить количество начальников и замов на отдел . Другие должности я не рассматриваю.
Т.е при добавлении сотрудника,нельзя назначить еще одного человека на должность начальника если их лимит исчерпан.
Предполагаю что это нужно работать со штатным расписанием,но может и ошибаюсь.
Я вам говорил про запрос "Вакансии"
Вот нужно сделать триггеры на таблицы Штатное_расписание и Сотрудник, и проверять там, что бы количество вакантных мест не было отрицательным
18 май 17, 23:59    [20494488]     Ответить | Цитировать Сообщить модератору
 Re: Запросы на подсчет должностей  [new]
fantanol
Member

Откуда:
Сообщений: 191
alexeyvg
fantanol
Как можно ограничить количество начальников и замов на отдел . Другие должности я не рассматриваю.
Т.е при добавлении сотрудника,нельзя назначить еще одного человека на должность начальника если их лимит исчерпан.
Предполагаю что это нужно работать со штатным расписанием,но может и ошибаюсь.
Я вам говорил про запрос "Вакансии"
Вот нужно сделать триггеры на таблицы Штатное_расписание и Сотрудник, и проверять там, что бы количество вакантных мест не было отрицательным
Не то чтобы отрицательное. А допустим 2 начальника на отдел. 1 зам на отдел
19 май 17, 00:58    [20494553]     Ответить | Цитировать Сообщить модератору
 Re: Запросы на подсчет должностей  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31339
fantanol
alexeyvg
пропущено...
Я вам говорил про запрос "Вакансии"
Вот нужно сделать триггеры на таблицы Штатное_расписание и Сотрудник, и проверять там, что бы количество вакантных мест не было отрицательным
Не то чтобы отрицательное. А допустим 2 начальника на отдел. 1 зам на отдел
А, на отдел? Я думал, вы про общее ограничение количества должностей.

Количество начальников в отделе можно проверить в триггере на Сотрудник, по полям id_Отдел, id_Должность, и оно не должно быть больше 1
19 май 17, 09:21    [20494878]     Ответить | Цитировать Сообщить модератору
 Re: Запросы на подсчет должностей  [new]
fantanol
Member

Откуда:
Сообщений: 191
alexeyvg
fantanol
пропущено...
Не то чтобы отрицательное. А допустим 2 начальника на отдел. 1 зам на отдел
А, на отдел? Я думал, вы про общее ограничение количества должностей.

Количество начальников в отделе можно проверить в триггере на Сотрудник, по полям id_Отдел, id_Должность, и оно не должно быть больше 1

Сможете помочь с этим?
19 май 17, 10:33    [20495229]     Ответить | Цитировать Сообщить модератору
 Re: Запросы на подсчет должностей  [new]
fantanol
Member

Откуда:
Сообщений: 191
Что предложите по этому?
"Список сотрудников,которым необходимо повысить квалификацию"?

Мне остались этот и тот вопрос выше и всё
19 май 17, 16:51    [20497106]     Ответить | Цитировать Сообщить модератору
 Re: Запросы на подсчет должностей  [new]
fantanol
Member

Откуда:
Сообщений: 191
апп
20 май 17, 14:31    [20498372]     Ответить | Цитировать Сообщить модератору
 Re: Запросы на подсчет должностей  [new]
xenix
Guest
автор
Мне остались этот и тот вопрос выше и всё

а потом ты отсюда исчезнешь навсегда?
20 май 17, 20:22    [20498685]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 2 3 [4] 5 6   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить