![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Вопрос по нумерации [D6, IB6.x]
jen_bond © (2003-12-23 20:05:00)
Мастера подскажите, а то что-то решение ни как не могу придумать.
Есть таблица в которой храниться информация о доп.соглашениях к договорам. Данная таблица завязана с таблицей
договоров через Foreign key(id_sdelka). Необходимо ввсети нумерация доп.соглашенй к каждому договору. Доп.соглашений
на любой из договоров может быть неограниченное кол-во.
Пример:
Договор №1:доп.соглашение №1,№2
Договор №2: доп.соглашение №1,№2,№3 и.тд.
Каким образом можно контролировать данную нумерацию?
Nikolay M. (2003-12-24 10:22:00) [1]
> Иногда номер пункта - это часть документа и такой подход
> недопустим.
Поэтому в [3], [4] были уточняющие вопросы, а не советы, что так именно и нужно делать.
Если номер таки нужен, тогда [2].
Sergey13 (2003-12-24 10:07:00) [2]
2jen_bond © (23.12.03 20:05)
Программно проблема решается просто
select max(номер)+1 where id_sdelka=:id
при вставке.
Но должны быть прописаны и некие правила, например не разрешающие удалять дополнения, или перенумерация при удалении. Так же надо предусмотреть защиту при многопользовательском доступе.
2Nikolay M. © (24.12.03 09:51) [4]
> а пользователю их показать, отсортированными по дате
Иногда номер пункта - это часть документа и такой подход недопустим.
Nikolay M. (2003-12-24 09:51:00) [3]
> Имеют ли такие номера "жизненное" выражение ? Или это чистый
> суррогат ?
Угу. Имхо, достаточно даты заключения доп. соглашения, а пользователю их показать, отсортированными по дате. И номер тогда возникает уже в процессе выборки доп. соглашений, следовательно, нет проблемы его генерации и хранения. А если одно из соглашений удалят? Будет дырявая нумерация?
Johnmen (2003-12-23 23:22:00) [4]
>доп.соглашение №1,№2,№3
Имеют ли такие номера "жизненное" выражение ? Или это чистый суррогат ?
От ответа на этот вопрос зависит ответ на твой вопрос...
Nikolay M. (2003-12-23 20:43:00) [5]
> Каким образом можно контролировать данную нумерацию?
Триггер на вставку в таблице доп. соглашений + генератор.
Silver_ (2003-12-23 20:30:00) [6]
Дополнителиная таблица
Договор_ДопСоглашения
-id_sdelka
-LastSoglasNr
Когда добавляеш новое соглашение(лучше в OnBeforePost) заглядываеш в Договор_ДопСоглашения находиш соответствующий id_sdelka
и забераеш значение LastSoglasNr, незабывая отинкрементить; если не нашел - добавляеш соответствующий id_sdelka
и LastSoglasNr = 1
Сам так делаю пока ничего лучшего не придумал