Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / проверка открытия файла / 10 сообщений из 10, страница 1 из 1
26.06.2016, 09:56
    #39262488
данила778
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проверка открытия файла
Добрый день! Необходимо проверить, открыт ли файл access. Если проверять по наличию файла блокировки, то иногда бывают
случаи что файл блокировки после закрытия не удаляется.

Вот нашел другой пример проверки, как думаете, насколько он хорош?
Может есть другие способы решить эту проблему?

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Sub GlosFileAc() 'проверка
Dim lngChanel As Long
On Error Resume Next
    lngChanel = DDEInitiate("Microsoft Access", "C:\dbdb.mdb")
    If Err.Number = 0 Then
        MsgBox "файл открыт"
    Else
        MsgBox "файл закрыт"
    End If
End Sub
...
Рейтинг: 0 / 0
29.06.2016, 19:17
    #39264989
данила778
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проверка открытия файла
Доброго вечера.. Нет вариантов\мнений?
...
Рейтинг: 0 / 0
29.06.2016, 19:34
    #39264999
MrShin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проверка открытия файла
Да несколько способов есть проверки
1. Попытаться открыть с опцией Exclusive
2. Проверить получением объекта базы:
Код: vbnet
1.
2.
3.
4.
5.
6.
Set appAccess = GetObject("C:\Documents and Settings\Brett\My Documents\Access\BinaryTest.mdb", "Access.Application")
If Err.Number <> 0 Then
  'The database was not open so open it
  Set appAccess = CreateObject("Access.Application")
  Err.Clear
End If


3. Попытаться просто открыть файл:
Код: vbnet
1.
2.
Open dbFile For Binary Access Read Write Shared As fh
dbOpen = (Err.Number > 0)


Этого дожно быть достаточно
...
Рейтинг: 0 / 0
30.06.2016, 14:19
    #39265520
Mabiz
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проверка открытия файла
Очень специфичный вариант - посадить на таймер постоянную перезапись текущего времени в какое-то отдельное поле. Если время записи превышено - база не работает.
...
Рейтинг: 0 / 0
30.06.2016, 15:02
    #39265582
MrShin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проверка открытия файла
MabizОчень специфичный вариант - посадить на таймер постоянную перезапись текущего времени в какое-то отдельное поле. Если время записи превышено - база не работает.
Вот таймером нужно пользоваться с большой осторожностью. Акцесс не может полностью распараллеливать процессы, включая таймер. Будет подтормаживать все остальное, особенно пересчет в формах/отчетах/запросах
...
Рейтинг: 0 / 0
01.07.2016, 10:30
    #39266099
Данила778
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проверка открытия файла
спасибо за комментарии..

А мой пример имеет право на жизнь? :)
...
Рейтинг: 0 / 0
01.07.2016, 11:34
    #39266197
MrShin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проверка открытия файла
Данила778,

Ну так попробуйте и нам расскажите :) Способ довольно оригинальный, по идее должен работать.
...
Рейтинг: 0 / 0
04.07.2016, 09:47
    #39267129
vmag
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проверка открытия файла
Данила778А мой пример имеет право на жизнь? :)

вот это

данила778Добрый день! Необходимо проверить, открыт ли файл access. Если проверять по наличию файла блокировки, то иногда бывают
случаи что файл блокировки после закрытия не удаляется.

тоже имеет право на жизнь: файл блокировки (ldb) обычно остается при аварийном завершении приложения, обойти это можно так:
- в приложении делаем одну связанную таблицу на проверяемую БД
- в форме размещаем невидимый список без источника данных и кнопку проверки монопольности
- в событии нажатии кнопки:
1. Списку делаем источник данных связанную таблицу (+ Requery)
2. Списку делаем источник данных "" (+ Requery)
3. Проверяем наличие ldb
В этом случае пункт 1 мертвый ldb сделает живым (или создаст новый или использует рабочий совместный), пункт 2 закроет ldb при условии отсутствия подключения других клиентов.
...
Рейтинг: 0 / 0
04.07.2016, 10:51
    #39267157
Панург
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проверка открытия файла
данила778...Если проверять по наличию файла блокировки, то иногда бывают
случаи что файл блокировки после закрытия не удаляется...Более того, науке известны случаи? когда файл блокировок не создаётся... :)

А цель то какая? Проверить и не допустить повторного открытия или проверить наличие других пользователей?

1. WMI или Win32 API
2. Получить список юзеров, которые совершают одновременное чтение базы
...
Рейтинг: 0 / 0
04.07.2016, 10:55
    #39267159
Панург
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проверка открытия файла
Поправил ссылку...
Панургданила778...Если проверять по наличию файла блокировки, то иногда бывают
случаи что файл блокировки после закрытия не удаляется...Более того, науке известны случаи, когда файл блокировок не создаётся... :)

А цель то какая? Проверить и не допустить повторного открытия или проверить наличие других пользователей?

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


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