Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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
8-10844
dronas555
2003-05-06 12:08
2003.09.04
Формат BMP


14-10925
mOOx_
2003-08-16 15:14
2003.09.04
Список запущенных задач на удаленной машине


1-10744
Jacob
2003-08-18 12:23
2003.09.04
Сделать невидимым столбец в TListView


3-10615
Gennadiy
2003-08-13 14:56
2003.09.04
Проблема с созданием предстваления


14-10909
ДедушкаКо
2003-08-18 11:39
2003.09.04
уже опохмелился и пойду,наверное, домой





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский