Проверить доступность БД в сети (DAO 3.6)

Работа VB и СУБД (Access, MSSQL, MySQL, Oracle и пр.)
Правила форума
При создании новой темы не забывайте указывать используемую СУБД.
Nicky
Постоялец
Постоялец
 
Сообщения: 519
Зарегистрирован: 12.08.2004 (Чт) 12:14

Проверить доступность БД в сети (DAO 3.6)

Сообщение Nicky » 16.06.2006 (Пт) 7:53

База MDB лежит на сетевом диске. Если при запуске программы база доступна (есть соединение), и в процессе работы программы соединение отключить, то по прежнему прокатывают такие вещи, как OpenDatabase, Execute "Select count(*) from T1".
Вопрос: как _правильно_и_надежно_ проверить доступность базы?

Offtop: а какой смысл при создании темы выводить запрос с ОК и Отмена, если результат один?

[EDIT] Небольшая иллюстрация:
Код: Выделить всё

Function gErrorHandler() As Boolean
  On Error Resume Next
 
  If Not BaseExists(mySett.sBaseDir & cMainBase) Then
    Do
      fmMain.sbarMain.Panels(1).Text = "Нет доступа к базе данных, пауза 5 сек..."
      Sleep 5000
      DoEvents
    Loop Until BaseExists(mySett.sBaseDir & cMainBase)
  End If
 
  Err.Clear
End Function

Function BaseExists(sBase As String, Optional db As Database, Optional sConnect _
  As String, Optional sErr As String) As Boolean
 
  Dim bDB As Boolean
  On Error GoTo er
 
  sErr = ""
  bDB = db Is Nothing
  If bDB Then Set db = OpenDatabase(sBase, 0, 0, sConnect)
  BaseExists = True
  GoTo ok

er:
  sErr = Err.Description
ok:
  If bDB Then Set db = Nothing
  Err.Clear
End Function

Al Khamid
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 274
Зарегистрирован: 11.02.2004 (Ср) 10:00
Откуда: Москва, Ховрино

Сообщение Al Khamid » 16.06.2006 (Пт) 8:21

НO
Последний раз редактировалось Al Khamid 06.11.2007 (Вт) 16:02, всего редактировалось 1 раз.

SergT
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 237
Зарегистрирован: 22.06.2005 (Ср) 21:50
Откуда: Москва

Сообщение SergT » 16.06.2006 (Пт) 9:11

Я просто проверяю наличие файла БД. Например If Dir( DbPath &"\db1.mdb"). Если есть - можно Рекордсетом проверить кол-во записей в таблице...
Л. Толстой, «зачем обдумывать обдуманное, бери готовое и иди дальше, в этом сила человечества»
"Всё в наших руках, поэтому их нельзя опускать" (Коко Шанель)

Nicky
Постоялец
Постоялец
 
Сообщения: 519
Зарегистрирован: 12.08.2004 (Чт) 12:14

Сообщение Nicky » 16.06.2006 (Пт) 10:57

2 Al Khamid
1. Ну опечатка, конечно же OpenRecordset("Select count(*) from T1")
2. У меня не логи, у меня розничная торговля, поэтому без базы никак

2 SergT
1. Файловый доступ хотелось бы исключить
2. Если ты не понял, кол-во записей показывает! без соединения!!

SergT
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 237
Зарегистрирован: 22.06.2005 (Ср) 21:50
Откуда: Москва

Сообщение SergT » 16.06.2006 (Пт) 11:29

Не знаю, почему исключить, но я уже много времени пользую:

Public Function isExist(FilePath As String) As Boolean
On Error GoTo errorhandler
Call FileLen(FilePath)
isExist = True
Exit Function

errorhandler:
isExist = False
End Function
... и нет проблем. С Dir -бывают
Л. Толстой, «зачем обдумывать обдуманное, бери готовое и иди дальше, в этом сила человечества»
"Всё в наших руках, поэтому их нельзя опускать" (Коко Шанель)

Nicky
Постоялец
Постоялец
 
Сообщения: 519
Зарегистрирован: 12.08.2004 (Чт) 12:14

Сообщение Nicky » 16.06.2006 (Пт) 11:39

Исключить потому, что файлового доступа может не быть

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 16.06.2006 (Пт) 11:40

Попробуй так проверить существование файла гига в три размером.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

SergT
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 237
Зарегистрирован: 22.06.2005 (Ср) 21:50
Откуда: Москва

Сообщение SergT » 16.06.2006 (Пт) 12:05

GSerg писал(а):Попробуй так проверить существование файла гига в три размером.

Я бы положил в папку с БД любой файл небольшого размера и проверял бы его, считая, что рядом все равно есть БД. Если ее нет - это уже отдельная (аварийная) ситуация!
А вот почему не может быть файлового доступа? Можно привести пример?
Л. Толстой, «зачем обдумывать обдуманное, бери готовое и иди дальше, в этом сила человечества»
"Всё в наших руках, поэтому их нельзя опускать" (Коко Шанель)

Nicky
Постоялец
Постоялец
 
Сообщения: 519
Зарегистрирован: 12.08.2004 (Чт) 12:14

Сообщение Nicky » 16.06.2006 (Пт) 12:17

SergT писал(а):А вот почему не может быть файлового доступа? Можно привести пример?

Считай это необходимым требованием


Вернуться в Базы данных

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 4

    TopList