Подсчитайте количество таблиц и столбцов в базе данных доступа с помощью запроса - PullRequest
0 голосов
/ 07 мая 2020

Могу ли я получить количество таблиц и их столбцов в базе данных доступа с помощью запроса?

1 Ответ

1 голос
/ 07 мая 2020

Существует системная таблица под названием «MSysObjects», в которой хранятся сведения обо всех объектах в текущей базе данных. Вы можете использовать это вместе с короткой функцией VBA, чтобы получить необходимую информацию.

Сначала вставьте этот код VBA в модуль:

Function fCountColumn(strTable) As String
    On Error GoTo E_Handle
    fCountColumn = DBEngine(0)(0).TableDefs(strTable).Fields.Count
fExit:
    On Error Resume Next
    Exit Function
E_Handle:
    MsgBox Err.Description & vbCrLf & vbCrLf & "fCountColumn", vbOKOnly + vbCritical, "Error: " & Err.Number
    Resume fExit
End Function

Затем создайте запрос и задайте для SQL значение:

SELECT [Name], fCountColumn([Name]) AS ColumnCount
FROM MSysObjects
WHERE [Type]=1 AND [Flags]=0
ORDER BY [Name] ASC;

Это возвращает только собственные таблицы доступа - для других таблиц вам нужно будет добавить флаги и тип, которые запрашиваются.

Альтернативным способом, отличным от SQL, было бы l oop коллекцию TableDefs в VBA и снова использовать свойство .Fields.Count каждого TableDef.

С уважением,

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...