Проверка качества подключения таблиц (DAO)
Private Function CheckConnectedTables() As Boolean
Dim tbl As TableDef
Dim rst As Recordset
On Error GoTo CheckConnectedTablesErr
For Each tbl In CurrentDb.TableDefs
If tbl.Connect <> "" Then
Set rst = CurrentDb.OpenRecordset(tbl.Name, dbOpenDynaset)
End If
Next
CheckConnectedTables = True
CheckConnectedTablesBye:
On Error Resume Next
Set tbl = Nothing
rst.Close
Set rst = Nothing
Exit Function
CheckConnectedTablesErr:
Resume CheckConnectedTablesBye
End Function
Ещё вариант:
Function IsTableOK(sTableName As String) As Boolean
Dim objField As Field
On Error GoTo IsFieldPresentErr
Set objField = CurrentDb.TableDefs(sTableName).Fields(0)
IsTableOK = True
Exit Function
IsFieldPresentErr:
Err.Clear
End Function
Примечание от Владимира Суханова:
Проверку качества подключения можно осуществить и не открывая таблицы. Для этого достаточно (у связанных таблиц естественно) проверить значение свойства Tabledefs("Таблица").Fields.Count - если оно равно 0, значит таблица привязана не по тому адресу.
Т.е. функция будет уже такой:
Private Function CheckConnectedTables2() As Boolean
Dim tbl As TableDef
On Error GoTo CheckConnectedTablesErr
For Each tbl In CurrentDb.TableDefs
If tbl.Connect <> "" Then
If tbl.Fields.Count = 0 Then GoTo CheckConnectedTablesBye
End If
Next
CheckConnectedTables2 = True
CheckConnectedTablesBye:
On Error Resume Next
Set tbl = Nothing
Exit Function
CheckConnectedTablesErr:
Resume CheckConnectedTablesBye
End Function
|