2012-05-01 36 views
7

我有一個數據庫在Access中有一個令人難以置信的數量的表。不幸的是,創建者使用了非描述性名稱,因此僅僅通過查看其名稱就可以猜出表格的基本內容。我需要緊急查找包含某些數據的表格,並且我很確定我知道其中某些列的名稱,或者至少包含列名稱中的單詞。基本上,我需要的是某種'在整個數據庫的每個表中按列名搜索',它顯示包含某些列名的所有表。當您知道列的名稱時查找表格?

在我開始像猴子一樣一個一個去之前,有什麼辦法可以做到嗎?

回答

7

此過程將列出名稱中包含您提供的文本的任何列的表名和列名。結果打印在立即窗口(去那裏按Ctrl + 克

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 
+0

工作就像一個魅力,謝謝! – Antrim

2

有一種方法可以找到具有特定列名的所有表,但它需要一些代碼(而不是僅僅能夠運行查詢)。

首先,您需要使數據庫中的系統表「可見」。您沒有提及正在使用哪個版本的MS Access,但選項對話框應該允許使用along these lines

這暴露了包含所有用戶表名稱的表MSysObjects

你會presumbably希望通過所有用戶表進行迭代,路過那裏的名字到打開的表作爲DAO.TableDef對象,並檢查相應的Fields集合屬性一些代碼。

Allen Browne有some VBA code that displays these attributes。您可以根據自己的需求進行自定義。

相關問題