VBA, MS Access MS Access в примерах

Вывод в Immadiate Window списока таблиц и индексов в них

Возникла необходимость поплнить документирование Access2003 списком таблиц и всех индексов к ним где и как это можно сделать?

Public Sub esIndexesOfTables()
'es - 06.08.2013
'Список таблиц и индексов в них
'--------------------------------------------------------------------
Dim tdf As DAO.TableDef
Dim idx As Index
Dim fld As Field

Dim s As String

On Error GoTo esIndexesOfTables_Err
    'Печатаем в Immediate окне список всех таблиц кроме системных
    s = String(50, "=") & vbCrLf
    For Each tdf In CurrentDb.TableDefs  'Перебераем коллекцию таблиц
        If (tdf.Attributes And dbSystemObject) = False Then 'Если таблица не системная (пользовательская)
            s = s & tdf.name & vbCrLf
        
            For Each idx In tdf.Indexes 'Перебераем коллекцию индексов в таблице
                s = s & vbTab & "Индекс: " & idx.name & " Уникальный: " & idx.Unique & " Первичный: " & idx.Primary & vbCrLf
                s = s & vbTab & "Содержит поля:" & vbCrLf
                
                For Each fld In idx.Fields 'Перебераем коллекцию полей в каждом индексе
                    s = s & vbTab & vbTab & fld.name & vbCrLf  'Имена полей входящих в индекс
                Next
            Next
        End If
    Next
    s = s & String(50, "-") 'Черта
    Debug.Print s
  


esIndexesOfTables_Bye:
    Exit Sub

esIndexesOfTables_Err:
    MsgBox "Error " & Err.Number & vbCrLf & Err.Description & vbCrLf & _
    "in procedure esIndexesOfTables", vbCritical, "Error!"
    Resume esIndexesOfTables_Bye
End Sub
Назад ToTop
L.E. 21.09.2023
Рейтинг@Mail.ru