Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Проверка занятости базы данных с использованием DAO

1.2K
01 мая 2008 года
Штурман
147 / / 01.08.2003
Имеет место быть книга Excel, разбросанная по разным компам фирмы. Книга эта подключается к базе данных Access, расположенной на сервере фирмы через DAO.
В нескольких процедурах есть подключение к базе:
Dim Db As Database
Dim r As Recordset

Private Sub вставить_в_базу()
Set Db = OpenDatabase(путь, True, False, "MS Access")
Set r = Db.OpenRecordset("таблица", dbOpenDynaset)

здесь тело процедуры

и закрытие базы
r.Close
Set r = Nothing
Db.Close
Set Db = Nothing

End Sub

некоторые процедуры обрабатываются 3-4 секунды. Пока с книгой работали два человека, да еще пару раз в день, проблем не было. А сейчас, вдруг неожидано, проект получил актуальность, и с ним стало работать сразу несколько пользователей, и довольно часто. Что привело к периодическому сталкиванию пользователей при обращении к базе. Выскакивает ошибка 3356 с предупреждением, что база данных занята каким то пользователем.
Как, перед открытием базы "Set Db = OpenDatabase(путь, True, False, "MS Access")", проверить занятость базы, и в случае занятости подвесить код секунды на три, и снова повторить проверку занятости?
17K
04 мая 2008 года
HookEst
144 / / 27.03.2008
просто пытайся открыть, и проверяй код ошибки если возникнет
что-нибудь вроде
Код:
...
On Error Goto ERROR
OPEN:
Set Db = OpenDatabase(путь, True, False, "MS Access")
...
...
ERROR:
 If Err.Number = 3356 Then
Sleep
Resume OPEN
End IF
MsgBox Err.Description
...
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог