powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Проверка связи
10 сообщений из 10, страница 1 из 1
Проверка связи
    #38330881
Владимир43
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день!
Нуждаюсь в помощи в следующем вопросе:
-в файле mdb установлена связь с таблицей tbl1 из другого файла.
Скажите пожалуйста, как программно проверить работоспособность этой связи? (например, нарушение связи из-за перемещения файла-источника). Нужно получить True\False при работоспособности\неработоспособности связи.
Буду благодарен за любую помощь.
...
Рейтинг: 0 / 0
Проверка связи
    #38330954
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владимир43,

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
Public Function TableCheck_ADOX(ByVal TableName As String) As Boolean
Dim objCat As Object 'ADOX.Catalog

On Error GoTo HandleErrors

Set objCat = CreateObject("ADOX.Catalog")
    If objCat Is Nothing Then Exit Function
objCat.ActiveConnection = CurrentProject.Connection

    With objCat.Tables.Item(TableName)
        If .Type = "LINK" Then
            TableCheck_ADOX = (Len(Dir$("")) > 0)
        End If
    End With
ExitHere:
    Set objCat = Nothing
    Exit Function
HandleErrors:
    Select Case Err.Number
        Case 3265 'Не удается найти объект в семействе, соответствующий требуемому имени или порядковому номеру.
            'нет таблицы такой
            Resume ExitHere
        Case Else
            Debug.Print Err.Number; ; Err.Description
            Resume ExitHere
    End Select
End Function

Sub test()
'Debug.Print TableCheck_ADOX("tbl1")
Debug.Print TableCheck_ADOX("tb2")
End Sub
...
Рейтинг: 0 / 0
Проверка связи
    #38330965
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владимир43,

Извиняюсь, забыл дописать...
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
Public Function TableCheck_ADOX(ByVal TableName As String) As Boolean
Dim objCat As Object 'ADOX.Catalog

On Error GoTo HandleErrors

Set objCat = CreateObject("ADOX.Catalog")
    If objCat Is Nothing Then Exit Function
objCat.ActiveConnection = CurrentProject.Connection

    With objCat.Tables.Item(TableName)
        If .Type = "LINK" Then
            TableCheck_ADOX = (Len(Dir$(.Properties("Jet OLEDB:Link Datasource").Value)) > 0)
        End If
    End With
ExitHere:
    Set objCat = Nothing
    Exit Function
HandleErrors:
    Select Case Err.Number
        Case 3265 'Не удается найти объект в семействе, соответствующий требуемому имени или порядковому номеру.
            'нет таблицы такой
            Resume ExitHere
        Case Else
            Debug.Print Err.Number; ; Err.Description
            Resume ExitHere
    End Select
End Function
...
Рейтинг: 0 / 0
Проверка связи
    #38331002
Владимир43
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо. Скажите пожалуйста, а есть ли способы обойтись без ADO?(я не специалист, поэтому могу не правильно давать определения, так что извините, если что-то не так).
...
Рейтинг: 0 / 0
Проверка связи
    #38331026
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владимир43,

а чем конкретно не устраивает данный вариант? Функция-"чёрный ящик" - подключать ни чего не требуется, что подавать на входе показано в примере, на выходе что и просил.

Ещё варианты (там есть по-моему и с DAO) -> Автоматическое подключение внешних таблиц
...
Рейтинг: 0 / 0
Проверка связи
    #38331055
Владимир43
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Панург, спасибо Вам!
Скажите пожалуйста, у меня в аксессе 2000 проблем с использованием этой функции не будет? И нужно ли создавать какие-либо ссылки на библиотеки в референсах (для использования ADO) ?
...
Рейтинг: 0 / 0
Проверка связи
    #38331064
Фотография Лифчик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владимир43Спасибо. Скажите пожалуйста, а есть ли способы обойтись без ADO?(я не специалист, поэтому могу не правильно давать определения, так что извините, если что-то не так).Если по-простому, то DoCmd.RunSQL "Select top 1 * from tbl1" и отлавливать ошибку, если селект не сработает (линкованной таблицы нет на месте)
...
Рейтинг: 0 / 0
Проверка связи
    #38331095
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владимир43Панург, спасибо Вам!
Скажите пожалуйста, у меня в аксессе 2000 проблем с использованием этой функции не будет? И нужно ли создавать какие-либо ссылки на библиотеки в референсах (для использования ADO) ?
Панург...Функция-"чёрный ящик" - подключать ни чего не требуется , что подавать на входе показано в примере, на выходе что и просил.
в аксессе 2000 работать тоже будет
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Проверка связи
    #39928859
mi34
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день.
Использовал функцию Панурга :) (за что огромное спасибо), но неделю назад она перестала работать, глухо зависает. На компах с win7, обновленной win10, все работает без проблем, а на win10 (1803, не обновляемая) виснет.
Если, например, библиотеки какие подставить с обновленных ОС, то работать будет? Подскажите, с какими поэкспериментировать? Спасибо
...
Рейтинг: 0 / 0
Проверка связи
    #39928919
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mi34
(1803, не обновляемая)
Что значит "необновляемая"? используйте upgrade wizard, сначала 1803, потом 1909 - всё прекрасно обновляется.
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Проверка связи
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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