Автор | Сообщение |
|
| |
Пост N: 2285
Зарегистрирован: 17.05.05
|
|
Отправлено: 10.02.12 16:11. Заголовок: Сквозная нумерация документов при работе в сети.
Кто и как решал этот вопрос ? В однопользовательском режиме как бы все просто. Держим для этого в базе поле с номером документа + индекс по этому полю. При добавлении документа следующий номер вычисляем так: Переключаемся на индекс (о котором писал выше) , делаем dbgobottom() и присваиваем переменной значение из поля +1 И тд В многопользовательском режиме такой механизм будет глючить
|
|
|
Ответов - 27
, стр:
1
2
All
[только новые]
|
|
|
| Администратор
|
Пост N: 2261
Зарегистрирован: 23.05.05
|
|
Отправлено: 17.02.12 12:31. Заголовок: Я эти средства делал..
Я эти средства делал немного для других целей, для гарантированного обеспечения уникального ключа. А начать с 1000 проще простого: dbAppend() Field->Numer := 1000 и можно затем использовать описанные выше средства.
|
|
|
|
| постоянный участник
|
Пост N: 740
Зарегистрирован: 27.01.07
|
|
Отправлено: 17.02.12 12:47. Заголовок: Pasha пишет: См. te..
Pasha пишет: цитата: | См. tests/letoudf.prg, первую функцию. |
| Спасибо. Посмотрю.
|
|
|
|
| постоянный участник
|
Пост N: 2
Зарегистрирован: 17.02.12
|
|
Отправлено: 17.02.12 13:02. Заголовок: Pasha пишет: Я эти ..
Pasha пишет: цитата: | Я эти средства делал немного для других целей, для гарантированного обеспечения уникального ключа. А начать с 1000 проще простого: dbAppend() Field->Numer := 1000 |
| Т.е. решение фиктивный документ, но это не есть красиво. Может добавить в функцию еще параметры (управляющий индекс первый) диапозон вхождения: второй (min), третий (max). Тогда если 1 не входит в диапозон получим 1001. Или как-то иначе. Ведь решение гарантированного обеспечения уникального ключа - AUTOINCREMENT
|
|
|
|
| Администратор
|
Пост N: 2262
Зарегистрирован: 23.05.05
|
|
Отправлено: 17.02.12 13:10. Заголовок: PSP пишет: Спасибо...
PSP пишет: Только там еще версия без проверки. С проверкой я скину вечером. Прогнал тест: 2 клиента одновременно добавляют в таблицу несколько сот тысяч записей с формированием ключа. Повторы не обнаружены, как и ожидалось. Погоды стоят предсказанные (С).
|
|
|
|
| постоянный участник
|
Пост N: 741
Зарегистрирован: 27.01.07
|
|
Отправлено: 17.02.12 13:23. Заголовок: Pasha пишет: С пров..
Pasha пишет: цитата: | С проверкой я скину вечером. |
| Да, это я понял.
|
|
|
|
| Администратор
|
Пост N: 2263
Зарегистрирован: 23.05.05
|
|
Отправлено: 17.02.12 13:28. Заголовок: SergKis пишет: Т.е...
SergKis пишет: цитата: | Т.е. решение фиктивный документ, но это не есть красиво. Может добавить в функцию еще параметры (управляющий индекс первый) диапозон вхождения: второй (min), третий (max). Тогда если 1 не входит в диапозон получим 1001. Или как-то иначе. Ведь решение гарантированного обеспечения уникального ключа - AUTOINCREMENT |
| Добавлю, и еще проверку переполнения тоже. Я оставлю эту функцию в hrb, так что ее можно модифицировать для себя как угодно. А autoincrement не всегда удобно использовать. По ключевому полю в любом случае необходим индекс, а раз есть индекс - можно обойтись и без автоинкремента. Да и ключ иногда хочется сделать символьным.
|
|
|
|
| постоянный участник
|
Пост N: 3
Зарегистрирован: 17.02.12
|
|
Отправлено: 17.02.12 13:50. Заголовок: Паша, спасибо за объ..
Паша, спасибо за объяснения и терпение !
|
|
|
Ответов - 27
, стр:
1
2
All
[только новые]
|
|