![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Нумерация документов [D7, Paradox]
Leon1 © (2005-01-28 08:28:00)Народ, ни кто не сталкивался с данной штукой? как лучше реализовать? естественно Номер документа как первичный ключ не подойдет! У меня есть идеи например:
1)реализация с помощью отдельной таблицы с автоинкрементным полем в которую производится вставка перед открытием документа тем самым можно получить значение следующего номера, минус этого способа если документ будет открыт и не записан получится что номер пропал
2)То же что и первое но вставка производится после запсиси документа, а значение автоинкрементного поля получается в момент открытия документа и увеличивается на 1.. минус пользователь может держать фиг знает сколько этот документ открытым и могут родиться документы с содинаковыми номерами
3) SQL запрос на MAX(NumDoc) минус точно такой же как и у 2 способа
4) SQL запрос на COUNT(*) минус номера должны быть изменяемыми и если после первого пошел 10 то следующий получим не 11 а 3...
Мож кто то подскажет еще какие нибудь решения?????
Соловьев (2005-01-28 11:13:00) [41]>[D7, Paradox]
>3) SQL запрос на MAX(NumDoc) минус точно такой же как и у 2 >способа
Почему это минус? Для файловых СУБД это как раз ед. решение.
Sergey13 (2005-01-28 11:08:00) [42][6] msguns © (28.01.05 10:33)
Все правильно, только уж слишком, ИМХО. 8-)
Я не вижу особых причин вообще редактировать номер. Просто смысла не вижу, а гемороя добавляет. Может я и ошибаюсь.
msguns (2005-01-28 10:53:00) [43]5. Перед записью нового/измененного заголовка документа можно давать запрос на поиск аналогичного и если есть, давать предупреждение с возможностью вычисления нового автономера. Эта фича, если честно, бывает практически не нужна: вероятность одновременного ввода однотипных документов за достаточно малое время мизерная.
msguns (2005-01-28 10:33:00) [44]1. Номер документа должен состоять из двух полей: числового и символьного.
2. Номер документа может меняться как при вводе, так и при корректировке документа
3. Номер (числовой) при добавлении документа может вычисляться автоматически как MAX(<Числовая часть номера>) WHERE <Тип документа> and <Условие по году>
4. В структуре записи заголовка док-та предусмотреть поле "Входящий номер" (симв. не менее 24) и "Входящая дата" для сохранения там оригинальных (с документа) номера и даты (используется для приходных и возвратов от покупателей)
Leon1 (2005-01-28 10:25:00) [45]Да документы обычные наклданые, путевые листы ТТН и прочая хренотень.... значит все таки номер менять не стоит... или может просто сделать что то типа внешний номер документа и внутренний?
ЮЮ (2005-01-28 09:54:00) [46]Во-первых, только не инкремент.
Во-вторых, в силу 1)-4) можно сразу взять номер на 1 болше, чем последний MAX(NumDoc) + 1, а при сохранении проверить, не записал ли кто документ с таким номером и, известив об этом сохраняющего документ пользователя, предложить ему новый номер.
Sergey13 (2005-01-28 09:51:00) [47]2[2] Leon1 (28.01.05 09:46)
>Ну положем объем задачи не такой чтобы применять SQL сервера,
А какой объем, по твоему критичен?
>мало ли какая хрень может случиться что потребуется номер документа изменить...
Вот именно хрень. Документ же наверное имеет и печатную копию. Перепечатывать. Если ты меняешь один, то может и остальные перенумеровываешь? Это ж быардак получается, ИМХО. ИМХО, опять же, но номер это неизменный атрибут документа.
Что за документы у тебя вообще? Накладные какие нибудь или что?
Leon1 (2005-01-28 09:46:00) [48]Ну положем объем задачи не такой чтобы применять SQL сервера, на счет изменяемых номеров, ну вот смотри, нужно переделать документы или еще что то, в общем такое очень часто происходит когда номер документа может быть изменен пользователем... мало ли какая хрень может случиться что потребуется номер документа изменить...
Sergey13 (2005-01-28 09:19:00) [49]>номера должны быть изменяемыми
Это как? Что это за номера такие?
Процесс записи должен быть коротким. Прочитал запись в переменные, работай скока шочешь, перед записью проверь условия и, при выполнении их, быстро запиши.
ЗЫ: Для многопользовательской работы лучше применять соответствующие инструменты. (это я про Парадокс 8-)