![]() |
Модераторы: Akella |
![]() ![]() ![]() |
|
aleks88 |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 55 Регистрация: 31.8.2011 Репутация: нет Всего: нет |
Здравствуйте! Подскажите как расчитать либо количество рабочих дней, либо количеств выходных между двумя датами?
В итоге должен быть вычисляемый стобец, использующий в котором прибавляется к дате количество дней. |
|||
|
||||
Deniz |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1251 Регистрация: 16.10.2004 Где: Новый Уренгой Репутация: 22 Всего: 44 |
aleks88, а причем тут FireBird?
Если в хранимой процедуре, то нужно указать версию сервера, от этого многое зависит. Можно использовать extract. -------------------- "Для того чтобы сделать шаг вперед, достаточно пинка сзади" (с) |
|||
|
||||
aleks88 |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 55 Регистрация: 31.8.2011 Репутация: нет Всего: нет |
Версия сервера 2.1.4
Подскажите, как сделать следующее: Есть поле с датой (Date), есть поле с количеством дней(Integer), есть некое бинарное поле [0,1] и есть расчитываемое поле. Если банарное поле равно 0, то расчитываемое поле = поле с датой + количество дней. Если бин. поле = 1, то расчитываемое поле = поле с датой + количество дней + количество выходных, выпадаемых за эти дни. Совсем не представляю как это сделат. Есть идея создавать файл Exel, там есть функция расчета числа рабочих дней между датами. Ииходя из этого, расчитывать все в Exe и читать программно в базу данных. Но веть это извращенство ![]() |
|||
|
||||
AndreyIQ |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 185 Регистрация: 5.2.2007 Репутация: нет Всего: 8 |
Первое, что приходит в голову (без дополнительных модулей) добавить таблицу с выходными.
|
|||
|
||||
aleks88 |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 55 Регистрация: 31.8.2011 Репутация: нет Всего: нет |
Мне тоже это приходило, но корректно ли будет вычисляться дата, если скажем, найдет количеств выходных, прибавим к начальной дате и где то опять попадет на выходные ?
На сколько рационално испльзовать Exel ? Там есть встроенная функция, сдвигающая дату на определенное количество рабочих дней. Т.е. выгрузили в файл Ексела дату и число дней, считали результат и записали в таблицу. |
|||
|
||||
AndreyIQ |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 185 Регистрация: 5.2.2007 Репутация: нет Всего: 8 |
Тогда лучше написать хранимую процедуру.
ЗЫ Про Excel забудьте ЗЗЫ Возможно есть UDF'ки для вашей задачи |
|||
|
||||
aleks88 |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 55 Регистрация: 31.8.2011 Репутация: нет Всего: нет |
Сложность в том, что с хранимыми процедурами не работал. :(
UDF это что ? Почему про эксел забыть? В чем проблемы ? |
|||
|
||||
aleks88 |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 55 Регистрация: 31.8.2011 Репутация: нет Всего: нет |
Подумал тут над хранимой процедурой. Неформальным языком должнобыть так:
1. Передать начальную дату и количество рабочих дней 2. Увеличиваем в цикле дату на 1 день и проверяем, выходной это или нет 3. если нет, то уменьшем количество рабочих дней на 1 4. как только количество рабочих дней станет равное нулю, выходим из цикла и возвращаем дату. Я на верном пути ? |
|||
|
||||
AndreyIQ |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 185 Регистрация: 5.2.2007 Репутация: нет Всего: 8 |
Через Excel делать это извращение, дикие тормоза и т.д.
Насчет, хранимой процедуры, Вы на верном пути. |
|||
|
||||
Deniz |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1251 Регистрация: 16.10.2004 Где: Новый Уренгой Репутация: 22 Всего: 44 |
Да.
Осталось только определить что есть выходной день? Суббота и воскресенье? Или добавить праздники? Для праздников нужна отдельная таблица. PS: UDF и Excel использовать не надо, достаточно хранимой процедуры. -------------------- "Для того чтобы сделать шаг вперед, достаточно пинка сзади" (с) |
|||
|
||||
Frees |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2233 Регистрация: 2.12.2005 Где: Екатеринбург Репутация: 1 Всего: 54 |
-------------------- Кольцов Виктор Владимирович |
|||
|
||||
aleks88 |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 55 Регистрация: 31.8.2011 Репутация: нет Всего: нет |
Эх, тяжко с налету что то делать ...
Благодарю всех за содействие! Буду разбираться в процедуре! ![]() |
|||
|
||||
Deniz |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1251 Регистрация: 16.10.2004 Где: Новый Уренгой Репутация: 22 Всего: 44 |
Frees, там задача немного поменялась.
Очень похожа на задачу определения дня выхода на работу из отпуска. PS: процедуру писать не буду, пусть автор сам немного поразмыслит, тем более пример уже дан. -------------------- "Для того чтобы сделать шаг вперед, достаточно пинка сзади" (с) |
|||
|
||||
Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 20 Всего: 329 |
||||
|
||||
aleks88 |
|
||||||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 55 Регистрация: 31.8.2011 Репутация: нет Всего: нет |
Виноват, казус ![]()
Да, заметил что задача немногим отличается, но не существенно... Вот, плод моих скудных размышлений, все верно ? На мой взгляд да, дата сдвигается на число рабочих дней (под рабочими понимаем все кроме СБ и ВС). Одно пока не ясно, как завязать на процедуру вычисляемый столбец , т.е. как при добавлении строки, передать в процедуру параметры из этой строки и занести возвращаемое значение в столбец :(
Это сообщение отредактировал(а) aleks88 - 1.2.2012, 18:17 |
||||||||
|
|||||||||
![]() ![]() ![]() |
Правила форума "Interbase" | |
|
Обязательно указание: 1. Версию InterBase (Firebird, Yaffil) 2. Способа доступа (ADO, BDE, IBX и т.д.)
Если Вам понравилась атмосфера форума, заходите к нам чаще! С Уважением, Akella. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Firebird, Interbase | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |