Форум » [x]Harbour » DbrLock и DbrLockList » Ответить

DbrLock и DbrLockList

Dima: Что то я потерялся. [pre2] Use test shared new //test->(Dbgoto(1)) test->(Dbrlock(1)) //test->(Dbgoto(10)) test->(Dbrlock(10)) ? hb_valtoexp(test->(dbrlocklist())) [/pre2] Запустил одну копию программы и получил {1,10} Запустил вторую копию этой же проги и получаю пустой массив {} Почему ? Собственно нужно выяснить какие записи заблокированы. PS Похоже dbrlocklist работает не так как я хотел )

Ответов - 7

Dima: IsDbRLock( xRec ) будучи запущенным из другой копии с той же базой дает результат что запись не блокирована. Единственно что верно срабатывает это Rlock() , но мне же не нужно блокировать запись на самом деле а надо просто выяснить какие записи в локе.

Haz: Дима, эта проблема еще со времен клиппера тянется. Первые стоны прозвучали при работе в DOS сессии W95. Решения похоже нет, во всяком случае при обычной работе с DBF. В ADS можно корректно получить все блокировки SQL запросом, ну ты понимаешь что для этого нужно))) Ps. Можешь свою на базе dbeval нарисовать

Dima: Haz пишет: В ADS можно корректно получить все блокировки SQL запросом Каким ? Может есть аналог в rddads...

Dima: Вот эта вроде пашет ADSMGGETLOCKS , только с параметрами не до конца разобрался

Dima: Haz Вот так вроде заработало [pre2] aray:=ADSMGGETLOCKS(50,DBF+"onluser.dbf") if !empty(aray) if ascan(aray,recs)#0 ret:=.t. endif endif [/pre2]

Haz: Дим Сам нашел))) я был в спортзале, память уже не та и без шпаргалки никак. Только приехал. Завтра гляну еще .

Dima: Haz пишет: Сам нашел Не совсем Haz пишет: В ADS можно корректно получить все блокировки SQL запросом Залез в справку и пробил SP_ и поехал по списку в поисках локов , нашел 2 подходящие и стал смотреть Help по ним. После глянул чего есть в RDDADS. С параметрами вроде не ошибся , работает. PS И по ходу идея переместить базу в "ZERO SPACE" была полезной. Это защитило ее от Dbcloseall() которые я так часто люблю делать



полная версия страницы