Привет, у меня следующая проблема:
В exel файле с помощью запроса подключается mdb файл
SELECT Measure_bas.Value
FROM `file_mdb`.Measure_bas Measure_bas
WHERE (Measure_bas.ID_Param=3)
ORDER BY Measure_bas.Value DESC
но данный запрос блокирует этот mdb файл, из-за чего в mdb файл нельзя потом осуществить запись.
Может надо закрыть запрос (типа коммандой close или end) или что-то другое?
или как изменить запрос, чтоб он открывал mdb файл только для чтения без блокировки?
Подскажите пожалуйста.
строка подключения такая DSN=MS Access Database; DBQ=\\сервер\папка\file.mdb; DefaultDir=\\сервер\папка; DriverId=25;FIL=MS Access;MaxBufferSize=2048;PageTimeout=5;UID=admin;
проблема-запрос блокирует mdb файл
Модератор: Naeel Maqsudov
Я так подозреваю, пока не выполнится запрос и не будет извлечён (выфетчен
) весь резалтсет драйвер не освободит файл.
Соответственно нужно резалтсет высвобождать.
Коннекция на чтение открывается строкой READONLY=true; после айди драйвера, но не факт что при этом не будет блокировки

Соответственно нужно резалтсет высвобождать.
Коннекция на чтение открывается строкой READONLY=true; после айди драйвера, но не факт что при этом не будет блокировки

Даже самый дурацкий замысел можно воплотить мастерски
- Naeel Maqsudov
- Сообщения: 2570
- Зарегистрирован: 20 фев 2004, 19:17
- Откуда: Moscow, Russia
- Контактная информация:
Непонятно, каким образом вызывается этот запрос: VBA или формулы?
Также непонятно, что значит "но данный запрос блокирует этот mdb файл, из-за чего в mdb файл нельзя потом осуществить запись." Каким образом Вы пытаетесь осуществить запись в этот файл?
Кстати, поищите, нельзя ли в строке подключения ODBC для Access явно указывать режим доступа: эксклюзивный или разделяемый.
SELECT не должен фатально блокировать даже записи в таблице.
Один .mdb можно одновременно открывать (по умолчанию режим разделяемый (shared)) несколькими экземплярами Access. Режимы блокировки, кстати, настраиваются в формах. Т.е. форма может блокировать таблицу, а может только записи.
Также непонятно, что значит "но данный запрос блокирует этот mdb файл, из-за чего в mdb файл нельзя потом осуществить запись." Каким образом Вы пытаетесь осуществить запись в этот файл?
Кстати, поищите, нельзя ли в строке подключения ODBC для Access явно указывать режим доступа: эксклюзивный или разделяемый.
SELECT не должен фатально блокировать даже записи в таблице.
Один .mdb можно одновременно открывать (по умолчанию режим разделяемый (shared)) несколькими экземплярами Access. Режимы блокировки, кстати, настраиваются в формах. Т.е. форма может блокировать таблицу, а может только записи.
Naeel Maqsudov писал(а):Непонятно, каким образом вызывается этот запрос: VBA или формулы?
Также непонятно, что значит "но данный запрос блокирует этот mdb файл, из-за чего в mdb файл нельзя потом осуществить запись." Каким образом Вы пытаетесь осуществить запись в этот файл?
Кстати, поищите, нельзя ли в строке подключения ODBC для Access явно указывать режим доступа: эксклюзивный или разделяемый.
SELECT не должен фатально блокировать даже записи в таблице.
Один .mdb можно одновременно открывать (по умолчанию режим разделяемый (shared)) несколькими экземплярами Access. Режимы блокировки, кстати, настраиваются в формах. Т.е. форма может блокировать таблицу, а может только записи.
1. Запрос вызывается VBA
2. В файл mdb ежеминутно на сервере происходит запись данных с помощью другой программы.
А пользователи просматривают со своих компьютеров эти данные с помощью запроса в МС Екселе
Так сам код VBА мы здесь увидим или нет?
It's a long way to the top if you wanna rock'n'roll
somewhere писал(а):Так сам код VBА мы здесь увидим или нет?
Извиняюсь, ошибся, я не силен в программировании. Имеется только строка подключения и сам запрос указанные выше.
- Naeel Maqsudov
- Сообщения: 2570
- Зарегистрирован: 20 фев 2004, 19:17
- Откуда: Moscow, Russia
- Контактная информация:
Тогда и говорить не о чем. Наверняка всё дело в коде.
Небось определили глобальную переменную, в процедуре ей присваивают экземпляр Connection или Database и привет... База занята до закрытия Excel-я...
Без исходного кода, которым открывается база, бессмысленно что-либо обсуждать.
Небось определили глобальную переменную, в процедуре ей присваивают экземпляр Connection или Database и привет... База занята до закрытия Excel-я...
Без исходного кода, которым открывается база, бессмысленно что-либо обсуждать.