Страница 1 из 1
проблема-запрос блокирует mdb файл
Добавлено: 11 сен 2013, 09:56
vancho
Привет, у меня следующая проблема:
В 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;
Re: проблема-запрос блокирует mdb файл
Добавлено: 11 сен 2013, 10:41
AiK
Я так подозреваю, пока не выполнится запрос и не будет извлечён (выфетчен

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

Re: проблема-запрос блокирует mdb файл
Добавлено: 11 сен 2013, 11:23
Naeel Maqsudov
Непонятно, каким образом вызывается этот запрос: VBA или формулы?
Также непонятно, что значит "но данный запрос блокирует этот mdb файл, из-за чего в mdb файл нельзя потом осуществить запись." Каким образом Вы пытаетесь осуществить запись в этот файл?
Кстати, поищите, нельзя ли в строке подключения ODBC для Access явно указывать режим доступа: эксклюзивный или разделяемый.
SELECT не должен фатально блокировать даже записи в таблице.
Один .mdb можно одновременно открывать (по умолчанию режим разделяемый (shared)) несколькими экземплярами Access. Режимы блокировки, кстати, настраиваются в формах. Т.е. форма может блокировать таблицу, а может только записи.
Re: проблема-запрос блокирует mdb файл
Добавлено: 12 сен 2013, 15:33
vancho
Naeel Maqsudov писал(а):Непонятно, каким образом вызывается этот запрос: VBA или формулы?
Также непонятно, что значит "но данный запрос блокирует этот mdb файл, из-за чего в mdb файл нельзя потом осуществить запись." Каким образом Вы пытаетесь осуществить запись в этот файл?
Кстати, поищите, нельзя ли в строке подключения ODBC для Access явно указывать режим доступа: эксклюзивный или разделяемый.
SELECT не должен фатально блокировать даже записи в таблице.
Один .mdb можно одновременно открывать (по умолчанию режим разделяемый (shared)) несколькими экземплярами Access. Режимы блокировки, кстати, настраиваются в формах. Т.е. форма может блокировать таблицу, а может только записи.
1. Запрос вызывается VBA
2. В файл mdb ежеминутно на сервере происходит запись данных с помощью другой программы.
А пользователи просматривают со своих компьютеров эти данные с помощью запроса в МС Екселе
Re: проблема-запрос блокирует mdb файл
Добавлено: 12 сен 2013, 16:23
somewhere
Так сам код VBА мы здесь увидим или нет?
Re: проблема-запрос блокирует mdb файл
Добавлено: 12 сен 2013, 16:56
vancho
somewhere писал(а):Так сам код VBА мы здесь увидим или нет?
Извиняюсь, ошибся, я не силен в программировании. Имеется только строка подключения и сам запрос указанные выше.
Re: проблема-запрос блокирует mdb файл
Добавлено: 14 сен 2013, 10:06
Naeel Maqsudov
Тогда и говорить не о чем. Наверняка всё дело в коде.
Небось определили глобальную переменную, в процедуре ей присваивают экземпляр Connection или Database и привет... База занята до закрытия Excel-я...
Без исходного кода, которым открывается база, бессмысленно что-либо обсуждать.