|
|
|
Как, работая через vfp oledb prov v9, обрабатывать блокировки?
|
|||
|---|---|---|---|
|
#18+
Допустим строится сетевое многопользовательское приложение. Как от провайдера узнать, что таблица заблокирована другим пользователем? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2006, 08:16 |
|
||
|
Как, работая через vfp oledb prov v9, обрабатывать блокировки?
|
|||
|---|---|---|---|
|
#18+
Единственный путь обработать ошибку открытиятаблицы. Правда есть ещё один - не открывать таблицы в монопольном режиме :)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2006, 09:07 |
|
||
|
Как, работая через vfp oledb prov v9, обрабатывать блокировки?
|
|||
|---|---|---|---|
|
#18+
Обрабатывать ошибки установки свойства mode, если ADO. В ADO.connection есть объект ERROR, коды ошибок, смотри: Microsoft Data Access SDK 2.8 - ErrorValueEnum. А можно хранимую процедуру использовать, смотри "Supported Visual FoxPro Commands and Functions in OLE DB Provider" в хелпе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2006, 14:28 |
|
||
|
Как, работая через vfp oledb prov v9, обрабатывать блокировки?
|
|||
|---|---|---|---|
|
#18+
Hi mifodi! Таблицы не должны блокироваться на продолжительное время, равно как и одиночные записи. Совершенно недопустимо блокировать что-то на время выполнения интерактивных операций - т.е. например на время пока пользователь правит запись (он может уйти на обед и оставить всё в заблокированном положении). Блокироваться данные должны лишь в момент "сброса" изменений - т.е. на время выполнения команд INSERT/UPDATE/DELETE - при этом блокировку делает сам фокс (и провайдер в том числе). При попытке одновременного изменения кто-то один из вносящих изменения получит ошибку - при этом неважно будет это программа напрямую работающая с таблицей, или программа работающая через OLEDB провайдер. Как разрешать этот конфликт - это уже твоя фантазия должна подсказать - можно пользователю сообщить что "занято", можно просто "молча" попробовать через некоторое время повторить операцию... В самом фоксе кстати есть настройка SET REPROCESS управляющая тем сколько раз фокс сам будет повторять попытки внесения изменений, прежде чем сгенерирует ошибку 108/109. Не знаю работает ли эта настройка в провайдере... При этом конечно возникает обычная проблема оптимистического способа блокировки - некто может изменить ту самую запись, которую мы правим в промежутке между тем как мы её прочитали и тем как мы её пытаемся записать обратно - но такие конфликты (Update Conflict) также легко определяются и есть несколько стратегий по их разрешению - можно переписать чужие изменения, можно отменить свои... Короче почитай материалы по буферизации и оптимистической блокировке данных (последнее кстати не чисто фоксовое изобретение - это используется во многих СУБД и программах работающих с данными - в сетевом/совместном режиме конечно) Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2006, 21:46 |
|
||
|
Как, работая через vfp oledb prov v9, обрабатывать блокировки?
|
|||
|---|---|---|---|
|
#18+
тогда другой вопрос: а почему я не могу выполнить несколько команд в одной конструкции? Напрмер, нужно выполнить несколько DML-инструкций (update/insert/delete) в одной конструкции, не вызывая несколько раз ExecuteNonQuery()? Вообще, записать несколько инструкций получается, но выполняется всегда первая. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2006, 08:13 |
|
||
|
Как, работая через vfp oledb prov v9, обрабатывать блокировки?
|
|||
|---|---|---|---|
|
#18+
mifodiтогда другой вопрос: а почему я не могу выполнить несколько команд в одной конструкции? Напрмер, нужно выполнить несколько DML-инструкций (update/insert/delete) в одной конструкции, не вызывая несколько раз ExecuteNonQuery()? Вообще, записать несколько инструкций получается, но выполняется всегда первая. Если мне не изменяет память с VFP 9.0 OLE DB Provider можно только одну за раз: MS VFP HelpVisual FoxPro OLE DB Provider does not support multiple result sets. Если есть желание, то можно самому написать все эти вещи, например, я передаю на Web Service таблицу в формате XML а далее Web Service уже работает отдельно с каждой записью из этой таблицы... Результат выполнения посылается исочнику и там уже разбираю ошибки... Хотя, конечно, хочется работать с DBF файлами как и с MS SQL, но увы - Большой брат говорит пока "Ни-ни", так как кто-то должен покупать и MS SQL Server Good luck! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2006, 10:16 |
|
||
|
Как, работая через vfp oledb prov v9, обрабатывать блокировки?
|
|||
|---|---|---|---|
|
#18+
Hi Sergey! Я сильно сомневаюсь что тут дело в "multiple result sets" - это касается ВОЗВРАТА множественных результатов, а не просто ВЫПОЛНЕНИЯ нескольких команд. Но ограничение вполне может иметь место, увы... Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.01.2006, 01:09 |
|
||
|
Как, работая через vfp oledb prov v9, обрабатывать блокировки?
|
|||
|---|---|---|---|
|
#18+
А что на самом деле означает эта фраза: "multiple result sets"? Перевод я понимаю, смысл ее мне не понятен. Или это тоже самое, как в MSSQL: "multibatch statements"? Но там получение множественных результатов отключается так: "set nocount on". По хорошему здесь должно быть подобное, имхо. Ну и опять же по аналогии: в само фоксе команды же выполняются в одном пакете, а не по мере поступления. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.01.2006, 09:43 |
|
||
|
Как, работая через vfp oledb prov v9, обрабатывать блокировки?
|
|||
|---|---|---|---|
|
#18+
mifodiА что на самом деле означает эта фраза: "multiple result sets"? Перевод я понимаю, смысл ее мне не понятен. Или это тоже самое, как в MSSQL: "multibatch statements"? Но там получение множественных результатов отключается так: "set nocount on". По хорошему здесь должно быть подобное, имхо. Ну и опять же по аналогии: в само фоксе команды же выполняются в одном пакете, а не по мере поступления. "multiple result sets" - это означает возврат несколькиз курсоров (наборов данных) "set nocount on" - отключает вывод промежуточных результатов, типа 10 row affected, но не отключает вывод результирующих курсоров Код: plaintext 1. 2. 3. 4. в итоге на клиенте получим 2 курсора. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.01.2006, 09:59 |
|
||
|
|

start [/forum/topic.php?fid=41&fpage=280&tid=1592564]: |
0ms |
get settings: |
7ms |
get forum list: |
15ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
47ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
46ms |
get tp. blocked users: |
1ms |
| others: | 248ms |
| total: | 379ms |

| 0 / 0 |
