Public Sub Test()
Dim rs As ADODB.Recordset
Set rs = CurrentProject.Connection.OpenSchema(adSchemaColumns, Array(Empty, Empty, "tbBases"))
With rs
Do While Not .EOF
Debug.Print !COLUMN_NAME, !Data_Type
.MoveNext
Loop
End With
End Sub
'\\======================================================
https://www.sql.ru/forum/22574/kak-poluchit-spisok-imen-poley-tablicy-v-ms-access
Sub my_sub()
Dim table_name As String: table_name = "ListIncident"
Dim column_names As Collection
Set column_names = ColumnList(table_name)
End Sub
Function ColumnList(ByVal table_name As String)
Dim column_names As New Collection
Dim Q As Integer
For Q = 0 To CurrentDb.TableDefs(table_name).Fields.Count - 1
column_names.Add CurrentDb.TableDefs(table_name).Fields(Q).Name
Next
Set ColumnList = column_names
End Function
--\\=================================================================
COLUMN_NAME(список имен полей таблицы)
Получение полей таблицы в MSSQL - TSQL
https://kbss.ru/blog/mssql/232.html
MS SQL - по необходимости
Этот запрос возвращает набор полей таблицы со всеми характеристиками. Метод также применим и замечательно работает с представлениями VIEW.
SELECT
ORDINAL_POSITION
,COLUMN_NAME
,DATA_TYPE
,CHARACTER_MAXIMUM_LENGTH
,IS_NULLABLE
,COLUMN_DEFAULT
FROM
INFORMATION_SCHEMA.COLUMNS
WHERE
TABLE_NAME = 'Название таблицы'
ORDER BY
ORDINAL_POSITION ASC;
А вот так можно узнать права пользователя.
sp_HelpUser имя_пользователя
--\\=================================================================
Sub GetFields()
http://forum.codenet.ru/q39997/
Dim con As ADODB.Connection
Dim adoxCat As New ADOX.Catalog
Dim adoxTable As ADOX.Table
Dim adoxTableColumns As ADOX.Columns
Dim i As Integer
Dim l As Integer
Set con = Application.CurrentProject.Connection
Set adoxCat.ActiveConnection = con
Set adoxTable = adoxCat.Tables("ListIncident")
Set adoxTableColumns = adoxTable.Columns
l = adoxTableColumns.Count
For i = 0 To l - 1
Debug.Print adoxTableColumns(i).Name
Next i
End Sub