powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Транзакции в ADP блокировка всей таблицы
14 сообщений из 14, страница 1 из 1
Транзакции в ADP блокировка всей таблицы
    #32483831
Sklz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Уважаемые\r
\r
Осмелюсь продолжить (вновь поднять) темы \r
\r
/topic/63874&hl=%f2%f0%e0%ed%e7%e0%ea%f6%e8%ff+%f4%ee%f0%ec%e0\r
\r
/topic/82083&hl=%f2%f0%e0%ed%e7%e0%ea%f6%e8%ff+%f4%ee%f0%ec%e0\r
\r
\r
Есть проект ADP пытаюсь сделать следущее\r
- открытие выбранной накладной \r
- изменение значений в этой накладной \r
- запись сделанных изменений или отмена корректировки \r
\r
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
\r
Private rst As New ADODB.Recordset\r
Private cnn As New ADODB.Connection\r
\r
Private Sub Form_Open(Cancel As Integer)\r
cnn.ConnectionString = CurrentProject.Connection\r
cnn.Open\r
rst.Open  "SELECT ZakazKey, KolZak, NaklKey\r
FROM dbo.ZakSobr WHERE (NaklKey = 15 ) ", cnn, adOpenKeyset, adLockOptimistic\r
Set Me.Recordset = rst\r
cnn.BeginTrans\r
End Sub\r
\r
Private Sub Form_Unload(Cancel As Integer)\r
cnn.RollbackTrans\r
If MsgBox( "Save ?" ,vbYesNo, "") = vbYes Then\r
cnn.CommitTrans \r
Else\r
cnn.RollbackTrans\r
End If\r
End Sub\r
\r
\r
\r
как только внутри транзакции происходят какие либо изменения\r
на серваке таблица ZakSobr блокируется \r
причем вся\r
\r
собственно вопросы\r
1. возможно ли не блокировать таблицу\r
\r
2. Вопрос Vitaly223 вы поднимали похожий топик как \r
все таки решили проблему
...
Рейтинг: 0 / 0
Транзакции в ADP блокировка всей таблицы
    #32483941
Хвост
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Транзакции должны быть КОРОТКИМИ.
В твоем случае - можно попробовать через отсоединеный рекодсет открытый как adLock Batch Optimistic есно с UpdateBatch
...
Рейтинг: 0 / 0
Транзакции в ADP блокировка всей таблицы
    #32483944
Фотография АлексейК
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в тех статьях совсем другие проблемы - в основном ODBC


Вопрос:
что ты уже пробовал чтоб не советовать тебе второй раз

Ставил тип курсора для конекшен - серверный ?
...
Рейтинг: 0 / 0
Транзакции в ADP блокировка всей таблицы
    #32483947
sasha_1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
было дело мучался я с формами на рекордсете.
огреб кучу глюков. по советам здешних жителей плюнул на это дело.

скорее всего и твой вопрос из этой же серии.
...
Рейтинг: 0 / 0
Транзакции в ADP блокировка всей таблицы
    #32483972
Sklz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В твоем случае - можно попробовать через отсоединеный рекодсет открытый как adLockBatchOptimistic есно с UpdateBatch

пожалуйста можно поподробнее



серверный курсор ставил

с IsolationLevel и Mode игрался по всекому все одно

и вообще все енто очень странная вещь
- если внутри транзакции прошли изменения таблица блокируется наглухо

- если до изменений открыть таблицу то все изменения (при нажатии F9)
отображаются как будто таблица редактируется напрямую

to sasha_1
как в итоге все сделал ?
...
Рейтинг: 0 / 0
Транзакции в ADP блокировка всей таблицы
    #32483990
Хвост
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
пожалуйста можно поподробнее

Ключевые слова сказаны - ищи как по форуму так и в хелпе к АДО.

- если внутри транзакции прошли изменения таблица блокируется наглухо

Update or Insert?
...
Рейтинг: 0 / 0
Транзакции в ADP блокировка всей таблицы
    #32484009
Sklz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
любые
...
Рейтинг: 0 / 0
Транзакции в ADP блокировка всей таблицы
    #32484013
Фотография АлексейК
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
попробовал твой вариант - пока без формы
блокировки таблицы не возникает ни при добавлении ни при обновлении

блокируютя только строки ...

MSSQL2000
может обновляется из формы много строк и оптимизатор сервера решает что проще заблокировать таблицу ? - тогда надо явно хинт в запрос прописать.

use northwind

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
Public Sub tst1()
Dim rst As New ADODB.Recordset
Dim cnn As New ADODB.Connection

cnn.ConnectionString = CurrentProject.Connection
cnn.Open
rst.Open  "SELECT * FROM customers WHERE (CustomerID = 'ANATR') " , cnn, adOpenKeyset, adLockOptimistic
cnn.BeginTrans
rst( "CompanyName" ) =  "Лзя Лзя Лзя" 
rst.Update

rst.AddNew
rst( "CompanyName" ) =  "123 "
rst!CustomerID =  "bobob" 
rst.Update

Debug.Assert False
If MsgBox( "Save ?" , vbYesNo, "") = vbYes Then
cnn.CommitTrans
Else
cnn.RollbackTrans
End If
End Sub


сейчас посмотрю что с формой происходит ...
...
Рейтинг: 0 / 0
Транзакции в ADP блокировка всей таблицы
    #32484045
Sklz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
adLockBatchOptimistic

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
rst.Open  "SELECT ZakazKey, KolZak, NaklKey
FROM dbo.ZakSobr WHERE (NaklKey = 15 ) ", cnn, adOpenKeyset, аdLockBatchOptimistic
....
....
Private Sub Form_Unload(Cancel As Integer)
If MsgBox( "Save ?" ,vbYesNo, "") = vbYes Then
Me.Recordset.UpdateBatch adAffectAllChapters
Else
Me.Recordset.CancelBatch adAffectAllChapters
End If
End Sub


если все правильно написал то не работает
обновление происходит прямо в таблице
...
Рейтинг: 0 / 0
Транзакции в ADP блокировка всей таблицы
    #32484071
Sklz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
to АлексейК

northwind
при Debug.Assert False
пытаюсь открыть таб customers - не открывается понятно в принципе почему
а жаль

SELECT dbo.Customers.* FROM dbo.Customers WHERE (CustomerID <> 'ANATR') тоже не выполняется

SELECT dbo.Customers.* FROM dbo.Customers WHERE (CustomerID = 'ALFKI') работает но в моей базе аналогичная вещь не прокатывает
видимо блокировка идет по станицам а у меня две соседние записи в одной
странице
или я брежу
...
Рейтинг: 0 / 0
Транзакции в ADP блокировка всей таблицы
    #32484112
Sklz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SELECT dbo.Customers.* FROM dbo.Customers WHERE (CustomerID = 'ALFKI') работает но в моей базе аналогичная вещь не прокатывает
видимо блокировка идет по станицам а у меня две соседние записи в одной
странице
или я брежу


индекс нужен на поле по которому WHERE
...
Рейтинг: 0 / 0
Транзакции в ADP блокировка всей таблицы
    #32484119
Фотография АлексейК
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
у меня работает

и в форме тоже работает
блокируются только те строки которые обновляю,
обновлял много строк, тоже работает

правда прописана однозначная таблица
customers
и команда синхронизации
SELECT * FROM customers Where CustomerID = ?


Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
Option Compare Database
Option Explicit

Private rst As New ADODB.Recordset
Private Cnn As New ADODB.Connection

Private Sub Form_Load()
Cnn.ConnectionString = CurrentProject.Connection
Cnn.Open
Cnn.BeginTrans
rst.Open  "SELECT * FROM customers " , Cnn, adOpenKeyset, adLockOptimistic
Set Me.Recordset = rst

End Sub

Private Sub Form_Open(Cancel As Integer)

End Sub

Private Sub Form_Unload(Cancel As Integer)

If MsgBox( "Save ?" , vbYesNo, "") = vbYes Then
Cnn.CommitTrans
Else
Cnn.RollbackTrans
End If
End Sub


блокировку смотрю открывая таблицу в режиме раблицы
еще раз это важно сервер MSSQL2000 без Sp
...
Рейтинг: 0 / 0
Транзакции в ADP блокировка всей таблицы
    #32484140
Фотография АлексейК
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не знаю поможет или нет
но попробуй

rst.Open "SELECT * FROM customers with (ROWLOCK) ", Cnn, adOpenKeyset, adLockOptimistic
...
Рейтинг: 0 / 0
Транзакции в ADP блокировка всей таблицы
    #32484155
Sklz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ВСЕ НАШЕЛ

rst.Open "SELECT ZakazKey, KolZak, NaklKey
FROM dbo.ZakSobr WHERE (NaklKey = 15) ", cnn, adOpenKeyset, adLockOptimistic

это пример на самом деле таблица на которой эксперементировал
лежит в другой базе на сервере
т.е.
rst.Open "SELECT ZakazKey, KolZak, NaklKey
FROM asd. dbo.ZakSobr WHERE (NaklKey = 15) ", cnn, adOpenKeyset, adLockOptimistic

как только задал Connect именно к той базе в которой лежит таблица
стало все просто отлично

всем огромное спасибо
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Транзакции в ADP блокировка всей таблицы
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]