【问题标题】:Get the name of the columns from a Access table by a Visual Basic通过 Visual Basic 从 Access 表中获取列的名称
【发布时间】:2020-01-27 22:28:38
【问题描述】:

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

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

【问题讨论】:

标签: vba ms-access


【解决方案1】:

我不确定您是否希望根据问题标题获取列名:

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

或每个问题内容的表名:

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

如果是前者,您可以遍历相关TableDef objectFields collection 并查询每个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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-04-12
    • 2011-02-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-17
    • 2023-04-02
    • 2018-11-03
    相关资源
    最近更新 更多