如何使用SQL在Access中的表中列出字段名称

Suf*_*fii 13 sql ms-access

如果可以在MS Access表中列出所有字段名称,请告诉我吗?

谢谢

小智 15

我在ms访问太多了.

我知道这样做的唯一方法是使用vba,并定义例如记录集,并循环遍历字段.

例如:

Sub ListFields()

dim rst as new adodb.recordset
rst.open "SELECT * FROM SomeTable", CurrentProject.Connection, adOpenForwardOnly, adLockReadOnly
' Note: adOpenForwardOnly and adLockReadOnly are the default values '
' for the CursorType and LockType arguments, so they are optional here '
' and are shown only for completeness '

dim ii as integer
dim ss as string
for ii = 0 to rst.fields.count - 1
    ss = ss & "," & rst.fields(ii).name
next ii

Debug.Print ss

End Sub
Run Code Online (Sandbox Code Playgroud)

字符串变量ss将包含名为"SomeTable"的表中所有列名的逗号分隔列表.

通过稍微重新格式化逻辑,您应该能够将此数据插入到另一个表中,然后查询它.

这有帮助吗?

  • 赞成(可能有些名义上)使用SQL,以及在MS Access中工作得太多的明显证据. (9认同)
  • 访问并不总是您所需的工具,但通常是您拥有的工具。关于在Access 2013中应用此功能的一个说明:我必须在“工具”->“参考”中启用“ Microsoft ActiveX数据对象6.1库”来解析ADO库。 (2认同)

Don*_*ett 9

该版本易于运行,可以直接粘贴到Access中。将此功能添加到模块中,以F5运行,然后从输入框中复制结果:

Public Function FieldNames() As String

    Dim sTable As String
    Dim rs As DAO.Recordset
    Dim n As Long
    Dim sResult As String

    sTable = InputBox("Name of table?")
    If sTable = "" Then
        Exit Function
    End If

    Set rs = CurrentDb.OpenRecordset(sTable)

    With rs
        For n = 0 To .Fields.Count - 1
            sResult = sResult & .Fields(n).Name & vbCrLf
        Next 'n
        .Close
    End With

    Set rs = Nothing

    InputBox "Result:" & vbCrLf & vbCrLf _
            & "Copy this text (it looks jumbled, but it has one field on each line)", _
            "FieldNames()", sResult

End Function
Run Code Online (Sandbox Code Playgroud)

替代输出:

用户user1003916提供了InputBox的替代方案,以克服1024个字符的限制(我尚未对此进行测试):

Sub CopyText(Text As String)

    'VBA Macro using late binding to copy text to clipboard.
    'By Justin Kay, 8/15/2014

    Dim MSForms_DataObject As Object
    Set MSForms_DataObject = CreateObject("new:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}")

    MSForms_DataObject.SetText Text
    MSForms_DataObject.PutInClipboard
    Set MSForms_DataObject = Nothing

End Sub
Run Code Online (Sandbox Code Playgroud)


Dav*_*ist 6

更新:要使用此 SQL 查询,您必须使用 DBEAVER 等工具。访问客户端不允许您查询它的隐藏结构。

哎呀!IMO:我无法想象想要潜入 VBA 的黑暗腹地

如何通过 SQL 获取访问表列

SELECT * FROM information_schema.columns 
    WHERE TABLE_NAME="YOUR_TABLE_NAME" 
       AND 
    TABLE_SCHEMA="PUBLIC" 
Run Code Online (Sandbox Code Playgroud)

PS 我注意到 Access 称我的架构为“PUBLIC”

上面使用了 Access 2016 并通过 ODBC 和 jdbc:ucanaccess 进行了测试,并且效果很好。

示例输出

列名称的屏幕截图


Sma*_*oli 5

您可以简单地使用 Documenter 工具。转到Database Tools > Database Documenter,选择表格并按确定。