ник: patq
Re: Как программно узнать эта таблица: системная, временная, созданная программистом? Уточнение вопроса как и откуда все вызывается
Поиск системных таблиц Access и временных таблиц Access (таблиц ошибок) производится из программы, написанной на VBA.
1. Системные таблицы Access
С системными более-менее ясно. Ниже приведен код программы, где тремя методами выявляются системные таблицы. Еще ниже приведены результаты их работы.
Public AccObj As Access.Application
Public TestBD As Database тестируемая БД
Sub AboutTable()
Dim i_Ob As Integer
Dim i_End As Integer
Dim i_Soo As String
‘создаем приложение Access
Set AccObj = CreateObject("Access.Application.8")
Set TestBD = CurrentDb
i_End = TestBD.TableDefs.Count
For i_Ob = 0 To i_End - 1
With TestBD.TableDefs(i_Ob)
Сравнивает значение свойства с заданными константами.
If (.Attributes And dbSystemObject) > 0 Then 1-ый метод выявления
i_Soo = .Name
End If
If .Attributes = dbSystemObject Then ‘2-ой метод выявления
i_Soo = .Name
End If
If Mid(.Name, 1, 4) = "MSys" Then 3-ий метод выявления
i_Soo = .Name
End If
End With
Next i_Ob
End Sub
Результаты выявления системных таблиц
Таблица And = "MSys"
MSysAccessObjects + - +
MSysACEs - - +
MSysCmdbars + - +
MSysModules + - +
MSysModules2 + - +
MSysObjects - - +
MSysQueries - - +
MSysRelationships - - +
где "+" - таблица выявлена
"-" - таблица не выявлена
2 Временные таблицы Access
Повторюсь (см. вопрос). Если в процессе работы БД (открытие БД, импорт данных, преобразование данных, …), возникает ошибка, то Access создает свои таблицы, где описывает эти ошибки (обычно это одна строка), с Attributes=0. К таким таблицам относятся “Ошибки ввода”, Ошибки импорта”, (из личного опыта и Help Access). В одной из моих БД он создал их аж 409 с наименованием “Ошибки преобразования409” (взято из реальной БД).
И непонятно, как выявить их