通过Visual Basic从Access表中获取列的名称

问题描述 投票:0回答:1

我正在尝试将表的名称放入列表中,以便可以使用它们创建一个SQL表。

我试图像SQL一样使用information_scheme执行此操作,但是MS Access不支持它。

vba ms-access access-vba
1个回答
0
投票

我不确定您是否要获取每个问题标题的列名:

通过Visual Basic从Access表中获取的名称

或每个问题内容的表名:

我正在尝试将表的名称放入列表中,以便我可以用它们创建一个SQL表。

[如果是前者,则可以遍历相关Fields collectionTableDef object并查询每个Field对象的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

立即窗口(Ctrl + G)示例输出:

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

如果要查找的是数据库中所有表名的数组,则可以在数据库中的TableDefs collection上进行迭代,如以下功能所示:

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
© www.soinside.com 2019 - 2024. All rights reserved.