On-line: alex_II, Andrey, i3t4j6, Pasha, Haz, гостей 0. Всего: 5 [подробнее..]
АвторСообщение
администратор




Пост N: 2285
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 10.02.12 16:11. Заголовок: Сквозная нумерация документов при работе в сети.


Кто и как решал этот вопрос ?

В однопользовательском режиме как бы все просто.
Держим для этого в базе поле с номером документа + индекс по этому полю.
При добавлении документа следующий номер вычисляем так:
Переключаемся на индекс (о котором писал выше) , делаем
dbgobottom() и присваиваем переменной значение из поля +1
И тд
В многопользовательском режиме такой механизм будет глючить

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 27 , стр: 1 2 All [только новые]


Администратор




Пост N: 2261
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 17.02.12 12:31. Заголовок: Я эти средства делал..


Я эти средства делал немного для других целей, для гарантированного обеспечения уникального ключа.
А начать с 1000 проще простого:

dbAppend()
Field->Numer := 1000

и можно затем использовать описанные выше средства.

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 740
Зарегистрирован: 27.01.07
ссылка на сообщение  Отправлено: 17.02.12 12:47. Заголовок: Pasha пишет: См. te..


Pasha пишет:

 цитата:
См. tests/letoudf.prg, первую функцию.


Спасибо. Посмотрю.

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 2
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 17.02.12 13:02. Заголовок: Pasha пишет: Я эти ..


Pasha пишет:

 цитата:

Я эти средства делал немного для других целей, для гарантированного обеспечения уникального ключа.
А начать с 1000 проще простого:
dbAppend()
Field->Numer := 1000


Т.е. решение фиктивный документ, но это не есть красиво. Может добавить в функцию еще параметры (управляющий индекс первый) диапозон вхождения: второй (min), третий (max). Тогда если 1 не входит в диапозон получим 1001. Или как-то иначе. Ведь решение гарантированного обеспечения уникального ключа - AUTOINCREMENT



Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Пост N: 2262
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 17.02.12 13:10. Заголовок: PSP пишет: Спасибо...


PSP пишет:

 цитата:
Спасибо. Посмотрю.



Только там еще версия без проверки. С проверкой я скину вечером.
Прогнал тест: 2 клиента одновременно добавляют в таблицу несколько сот тысяч записей с формированием ключа.
Повторы не обнаружены, как и ожидалось.
Погоды стоят предсказанные (С).


Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 741
Зарегистрирован: 27.01.07
ссылка на сообщение  Отправлено: 17.02.12 13:23. Заголовок: Pasha пишет: С пров..


Pasha пишет:

 цитата:
С проверкой я скину вечером.


Да, это я понял.

Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Пост N: 2263
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 17.02.12 13:28. Заголовок: SergKis пишет: Т.е...


SergKis пишет:

 цитата:
Т.е. решение фиктивный документ, но это не есть красиво. Может добавить в функцию еще параметры (управляющий индекс первый) диапозон вхождения: второй (min), третий (max). Тогда если 1 не входит в диапозон получим 1001. Или как-то иначе. Ведь решение гарантированного обеспечения уникального ключа - AUTOINCREMENT



Добавлю, и еще проверку переполнения тоже.
Я оставлю эту функцию в hrb, так что ее можно модифицировать для себя как угодно.
А autoincrement не всегда удобно использовать. По ключевому полю в любом случае необходим индекс, а раз есть индекс - можно обойтись и без автоинкремента. Да и ключ иногда хочется сделать символьным.

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 3
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 17.02.12 13:50. Заголовок: Паша, спасибо за объ..


Паша, спасибо за объяснения и терпение !


Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 27 , стр: 1 2 All [только новые]
Ответ:
1 2 3 4 5 6 7 8 9
большой шрифт малый шрифт надстрочный подстрочный заголовок большой заголовок видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки моноширинный шрифт моноширинный шрифт горизонтальная линия отступ точка LI бегущая строка оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 74
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет