Rambler's Top100
Форум: MS ACCESSVBVBA MS OfficeMS SQL server
Новые сообщения: 0000

Форум: VBA MS Office

Программирования для MS Office кроме ACCESS

Обновить визитку
Участники «Online»
Все участники

 
 

Доброго времени суток, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Проверка занятости базы данных с использованием DAO
 
 автор: Штурман   (04.05.2008 в 10:15)   личное сообщение
 
 

Имеет место быть книга 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")", проверить занятость базы, и в случае занятости подвесить код секунды на три, и снова повторить проверку занятости?

  Ответить  
 
 автор: час   (04.07.2008 в 22:02)   личное сообщение
 
 

Если база занята - Access создаёт файлик "Название_Базы.ldb"
Как только закрыли базу файлик исчезает (При условии что не было недоразумений)
Перед тем как лезть в базу необходимо проверить наличие этого файлика , если он имеется - попытаться удалить его, если после этого по указанному пути файлика нет - можно лезть в базу.
Если файлик не исчез сообщить "подождите немного кто-то там ковыряется".

  Ответить  
HiProg.com - Технологии программирования
Rambler's Top100 TopList