Почему происходит блокировка всей таблицы?

Yran
Дата: 04.12.2002 11:03:37
Работаю из Access 97 с SQL Server 2000 путем присоединения таблицы через ODBC и с помощью запросов к серверу.

Делаю следующее:
1. Создаю временную таблицу на основе части данных присоединенной таблицы через ODBC. Буру данные по продажам за определенную неделю.
2. Произвожу над этими данными ряд операций
3. Стираю данные в таблице на SQL Server за эту неделю с помощью запроса к серверу с помощью VBA. Упрощенно таким образом:

Dim QDef As QueryDef
Set QDef = dbc.CreateQueryDef("")
With QDef
.ReturnsRecords = False
.Connect= "ODBC;DSN=DataStat;Description=Статистика;UID=Georg;... и т.д"
.SQL = "DELETE FROM Продажи WHERE (Неделя = 48)"
.Execute
End With


4. Затем закачиваю измененные данные на сервер c помощью динамически создаваемого запроса Insert Into вида:

Insert Into [Продажи] (Неделя, КодТовара, Магазины, Кафе, ГорОпт,ОблОтдел, РегОпт, Москва, Сети, Партнер, Агростар, Разные, Остатки) Values (104153,-567604212,0,0,0,0,0,0,0,0,0,0,22.9)

Если никто не работает с этой таблицей все работает нормально. Но если там в момент вливания кто-нибудь изменяет любые данные, даже те которые никак не участвуют в операциях при попытке выполнения операций с таблицей возникает ошибка ODBC. Видимо при любой работе с таблицей на SQL Server блокирутся вся таблица. Почему это происходит и как с этим боротся?
Gulchatay
Дата: 05.12.2002 11:40:22
А почему не хочешь сделать это через рекордсет?
у объекта ADODB.Recordset можно установить тип блокировки.