Получить имя столбцов из таблицы Access с помощью Visual Basic - PullRequest
0 голосов
/ 27 сентября 2019

Я пытаюсь получить имена таблиц в списке, чтобы я мог создать таблицу SQL с ними.

Я пытался сделать это с information_scheme так же, как это делает SQL, но MSAccess не поддерживает это.

1 Ответ

0 голосов
/ 27 сентября 2019

Я не уверен, хотите ли вы получить имена столбцов для заголовка вашего вопроса:

Получить имя столбцов из таблицы Access с помощью Visual Basic

Или имена таблиц по содержанию вашего вопроса:

Я пытаюсь поместить имена таблиц в список, чтобы я могсоздайте таблицу SQL с ними.

Если первое, вы можете перебрать коллекцию Fields соответствующего объекта TableDef и запросить Nameсвойство для каждого объекта поля.

Например, следующая функция вернет массив имен полей, содержащихся в таблице с указанным именем:

Function FieldNames(strTbl As String) As String()
    Dim dbs As DAO.Database
    Dim def As DAO.TableDef
    Dim fld As DAO.Field
    Dim idx As Integer: idx = 0

    Set dbs = CurrentDb
    Set def = dbs.TableDefs(strTbl)

    Dim rtn() As String
    ReDim rtn(0 To def.Fields.Count - 1)

    For Each fld In def.Fields
        rtn(idx) = fld.Name
        idx = idx + 1
    Next fld
    FieldNames = rtn
End Function

Immediate Window ( Ctrl + G ) пример вывода:

x = FieldNames("YourTable")
?x(0)
Field1
?x(1)
Field2
?x(2)
Field3

Если вместо этого вы хотите получить массив всех имен таблиц в базе данных, вы можете выполнить итерацию по Коллекция TableDefs в базе данных, что демонстрируется следующей функцией:

Function TableNames() As String()
    Dim dbs As DAO.Database
    Dim def As DAO.TableDef
    Dim idx As Integer: idx = 0

    Set dbs = CurrentDb

    Dim rtn() As String
    ReDim rtn(0 To dbs.TableDefs.Count - 1)

    For Each def In dbs.TableDefs
        rtn(idx) = def.Name
        idx = idx + 1
    Next def
    TableNames = rtn
End Function
...