当您知道列的名称时查找表格?

时间:2012-05-01 22:24:08

标签: database ms-access

我在Access中拥有一个包含大量表格的数据库。不幸的是,创建者使用了非描述性的名称,因此基本上不可能通过查看其名称来猜测表格是什么。我需要紧急找到一个包含某些数据的表,我很确定我知道它的某些列的名称,或者至少包含列名称中包含的单词。基本上,我需要的是某种“在整个数据库中的每个表中按列名搜索”,它显示包含某些列名的所有表。

在我开始像猴子一样逐一去之前,有没有办法实现这一目标?

2 个答案:

答案 0 :(得分:7)

此过程将列出名称中包含您提供的文本的任何列的表名和列名。结果将打印在立即窗口中(使用 Ctrl + g

Public Sub ListTablesWithColumnNamesContaining(ByVal pText As String)
Dim db As DAO.Database
Dim tdf As DAO.TableDef
Dim fld As DAO.Field
Set db = CurrentDb
For Each tdf In db.TableDefs
    For Each fld In tdf.Fields
        If InStr(1, fld.Name, pText, vbTextCompare) > 0 Then
            Debug.Print tdf.Name & ":", fld.Name
        End If
    Next fld
Next tdf
Set fld = Nothing
Set tdf = Nothing
Set db = Nothing
End Sub

答案 1 :(得分:2)

有一种方法可以找到具有特定列名的所有表,但它需要一些代码(而不是只能运行查询)。

首先,您需要在数据库中使系统表“可见”。您没有提到正在使用哪个版本的MS Access,但选项对话框应该允许along these lines

这会公开包含所有用户表名的表MSysObjects

您可能会想要遍历所有用户表,将名称传递给某些代码,这些代码将表格作为DAO.TableDef个对象打开,并检查相应Fields集合的属性。

Allen Browne some VBA code that displays these attributes。您可以根据自己的需要进行自定义。