Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.03.16;
Скачать: CL | DM;

Вниз

Транзакции в ADO   Найти похожие ветки 

 
DimaL   (2007-10-23 03:35) [0]

Есть программа, работающая с БД Access. В БД хранятся документы (примерно как в 1С "Один ко многим"). При начале редактирования документа Открывается транзакция
ADOConnection.BeginTrans
и закрывается при закрытии документа. Проблема в следующем: Пока открыта транзакция доступ ко всем оспользуемым в транзакции таблицам полностью заблокирован. Как убрать блокировки.


 
ЮЮ ©   (2007-10-23 04:36) [1]

Отказаться от
> При начале редактирования документа Открывается транзакция
> ADOConnection.BeginTrans


Use the LockType ltBatchOptimistic to open a dataset in batch update mode.

Call UpdateBatch to write any pending updates to disk for a dataset that is in batch update mode to the associated database.


 
Sergey13 ©   (2007-10-23 08:46) [2]

> [0] DimaL   (23.10.07 03:35)
> Как убрать блокировки.

Тебе надо разобраться с транзакциями - что это такое и с чем это едят. Ты же пытаешься вылечить закономерные последствия неправильного их применения.


 
Сусл ©   (2007-10-23 11:12) [3]


> Как убрать блокировки.

наверное можно это в Access (в MS-SQL, например, запросто with no lock). Но вот последствия будут не самыми радостными. Ибо будешь читать грязные данные.

т.о. поддерживаю [1] полностью.


 
DimaL   (2007-10-24 03:28) [4]

Возможно я выбрал не удачный подход. Но каким образом можно решить такую задачу работы с документом?


 
Сусл ©   (2007-10-24 11:19) [5]


> Возможно я выбрал не удачный подход. Но каким образом можно
> решить такую задачу работы с документом

мы ее решаем так:
1. есть спец. механизмы блолкировок. нет те, которые предоставляет mssql-server, а свой механизм. интерфейс к нему типа ObjectMark и ObjectUnmart. параметром передается идентификатор объекта.
2. клиент берет объект на редактирование, предварительно выставляя макр (по нашему блокировку) на объект. никто другой более взять на редактирование не может.
3. при сохранении:
 а. begin tran.
 b. update (запись измененных данных объекта)
 c. commit
 d. OjbectUnmark.


 
Val ©   (2007-10-24 15:07) [6]

>..есть спец. механизмы блолкировок. нет те, которые предоставляет mssql-
>server, а свой механизм..
это попытка приделать костыль эмуляции блокировки уровня записи на сервере-блокировочнике?


 
Val ©   (2007-10-24 15:13) [7]

>DimaL
"Неправильность" подхода в данном случае, в основном, в том, что вы начинаете "длинную" транзакцию. Стоит обернуть в транзакцию только непосредственную передачу изменений на сервер.


 
Сусл ©   (2007-10-25 12:55) [8]


>  [6] Val ©   (24.10.07 15:07)
> >..есть спец. механизмы блолкировок. нет те, которые предоставляет
> mssql-
> >server, а свой механизм..
> это попытка приделать костыль эмуляции блокировки уровня
> записи на сервере-блокировочнике?


э... даже отвечать не хочется, ибо "костыль" и "приделасть" не располагают на нужный лад.


>  [7] Val ©   (24.10.07 15:13)
> >DimaL
> "Неправильность" подхода в данном случае, в основном, в
> том, что вы начинаете "длинную" транзакцию. Стоит обернуть
> в транзакцию только непосредственную передачу изменений
> на сервер.


о том и речь - транзакция только при сохранении.



Страницы: 1 вся ветка

Текущий архив: 2008.03.16;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.012 c
2-1203332964
Washington
2008-02-18 14:09
2008.03.16
Unit Variants


15-1202375660
@!!ex
2008-02-07 12:14
2008.03.16
Компиляция двух вариантов


15-1202266248
Slider007
2008-02-06 05:50
2008.03.16
С днем рождения ! 6 февраля 2008 среда


2-1203496459
fluxion
2008-02-20 11:34
2008.03.16
SQL запрос.


2-1203459331
Богдан
2008-02-20 01:15
2008.03.16
Как перетащить файл из ПРОГРАМЫ в ПАПКУ