Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > MS SQL Server > Блокирование записей


Автор: MadCoder 22.7.2008, 10:05
Здравствуйте!

Моя программа на Делфи получает данные с MS SQL Server из вьюшки. Переключение между записями осуществляется через .Next и .Prior.

Вопрос: как сделать так, чтобы два пользователя на разных компьютерах, работающие одновременно, не могли смотреть одну и ту же запись (т.е. блокировать строчку при просмотре и разблокировывать при переключении на другую).

Автор: MadCoder 22.7.2008, 10:25
Использую компонент TADOQuery, ставлю блокировку LockType:=ltPessimistic, но это не помогает. Я думаю, дело в том, что я использую вьюшку. Как можно решить?

Автор: uranpro 22.7.2008, 12:23
MadCoder, у тебя, наверно, все пользователи под одним именем заходят.
можно по примитивному: создать таблицу =) или добавить поле к таблице  smile (забавный смайл^^)

Автор: MadCoder 22.7.2008, 12:25
Цитата(uranpro @ 22.7.2008,  12:23)
MadCoder, у тебя, наверно, все пользователи под одним именем заходят.
можно по примитивному: создать таблицу =) или добавить поле к таблице  smile (забавный смайл^^)

Пользователи заходят под разными именами. Коннектятся к SQL серверу под одним. Что ты имеешь ввиду?
Я уже думал добавить поле, но тогда придется еще писать скрипт, который будет чистить "висячие" договоры (мало ли - комп повис, а договор останется заблоченным). Разве нет в SQL механизма блокировки записей?

Автор: uranpro 22.7.2008, 12:37
Цитата(MadCoder @  22.7.2008,  12:25 Найти цитируемый пост)
Пользователи заходят под разными именами. Коннектятся к SQL серверу под одним. 

так если они под одним коннектятся, то логично, что у них локтайп не будет работать, так как ставится он на определенного пользователя и виден только ему. а у тебя все пользователи как один)) если я правильно понял. 
зы:не точная инфа, догадки)))

Автор: MadCoder 22.7.2008, 18:02
Буду делать через дополнительное поле, как посоветовал 
uranpro, при открытии ставить туда занято, а при переходе на другую запись - удалять занято. Спасибо!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)