Форум: "Базы";
Текущий архив: 2003.09.04;
Скачать: [xml.tar.bz2];
ВнизУникальный номер зависящий от даты Найти похожие ветки
← →
TuZ (2003-08-12 10:15) [0]Здраствуйте мастера!
Есть такая задача: есть некая таблица, в которой хранятся документы, документы должны иметь свой номер. Использование генераторов и тригеров не совсем подходит, поскольку нужно, чтобы номер документа по истечении периода сбрасывался в "1".
Изменять значение генератора - не выход, поскольку не будет возможности ввести документ за прошлый период...
Есть мысля - завести на каждый период свой генератор, но это слишком неудобно.
Если у кого-то была похожая проблема или кто-то встречал где-то материал по этой теме: плиз, поделитесь.
Заранее спасибо.
← →
DenK_vrtz (2003-08-12 10:21) [1]Индекс документа - уникальный индекс(первичный ключ) таблицы,
а номер документа - номер документа в период.
Два генератора. У первого сплошная нумерация, у второго - нет.
Или в чем проблема?
← →
TuZ (2003-08-12 10:24) [2]2 DenK_vrtz
Совершенно верно: ID записи уникальный: обычный генератор_триггер. Он нам не очень интересен... Работает как положено... И знать пользователю его и не очень-то надо...
А по поводу номера документа: хотелось бы ее генерацию бросить на сервер... Типа через триггер или процедуру...
← →
DenK_vrtz (2003-08-12 10:29) [3]2 TuZ, так в чем проблема то?
Один генератор, который меняет значения в зависимости от периода или не генератор, а расчет значения номера документа в зависимости от максимального номера документа в данном периоде.
Сразу в нескольких периодах можно работать?
← →
TuZ (2003-08-12 10:32) [4]2 DenK_vrtz
Да, но как такой генератор сделать... Меня этот вопрос поставил в тупик...
← →
DenK_vrtz (2003-08-12 10:35) [5]Написать триггер, который бы определял период и текущее значение документа за период. Если данных за период нет, то № документа = 1.
← →
TuZ (2003-08-12 11:13) [6]Я так понял, что:
- есть генератор GenNo
в тригере:
- при каждой встаке определяется дата
- по дате определяется период
- и генератору присваивается макс. номер+1 или 1
Вопрос: зачем тогда генератор?.. Можно ведь определять макс. значение поля DocNo.
← →
DenK_vrtz (2003-08-12 11:17) [7]>>Вопрос: зачем тогда генератор?.. Можно ведь определять макс. значение поля DocNo
я же написал выше, что можно испоьзовать генератор, а можно и не использовать :-)
← →
DenK_vrtz (2003-08-12 11:19) [8]Вариантов решения проблемы много, надо выбрать оптимальный!
Можно вообще создать таблицу значений периодов и текущих значений номеров документов и от нее играть.
← →
TuZ (2003-08-12 11:22) [9]Спасибо большое!
Кое-какие мысли у меня появились.
← →
Zacho (2003-08-12 11:24) [10]
> TuZ (12.08.03 11:13) [6]
> Вопрос: зачем тогда генератор?.. Можно ведь определять макс.
> значение поля DocNo.
Можно. Но тогда надо блокировать таблицу (и на чтение тоже !), иначе при многопользовательской работе рискуешь получить конфликты в нумерации.
Посмотри ветку http://delphimaster.net/view/3-1060066885/ - может будет полезно.
← →
DenK_vrtz (2003-08-12 11:28) [11]Zacho © (12.08.03 11:24), прости за глупый вопрос. А в IB6.x при выполнении триггера таблица не блокируется? А просто не знаю.
← →
Zacho (2003-08-12 11:33) [12]
> DenK_vrtz © (12.08.03 11:28)
Ничего само по себе не блокируется. Триггер работает в контексте транзакции, в которой произошла модификация данных таблицы. Со всеми вытекающими отсюда последствиями..
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2003.09.04;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.009 c