我创建了一个过程,它将所有表的名称存储在数组中的外部数据库中。这样做的原因是,最终,我将使用它作为确定需要重新链接的表的参考点。
以下代码共返回 13个表:
For Each tb In db.TableDefs
If Left(tb.Name, 4) <> "MSys" Then
'Store these accepted table names in an array
astrTableNames(intArryPosition) = tb.Name
intArryPosition = intArryPosition + 1
End If
Next tb
并将其名称存储在数组中。当我打印数组时,这是结果列表:
1: DispenseStaging
2: DispenseSummary_All
3: DrugBrand
4: NDC
5: Programs
6: StateCodes
7: StoreInfo
8: tblCompany
9: tblGetProgramDispense
10: Users
11: Users1
12: Version
13: Zipcodes
这就是问题 - 当我打开数据库时 - 它只有 4个表。没有更多 - 没有链接或任何东西的引用。
那么这些桌子究竟来自哪里?这是否意味着他们曾经在那里,但随后被删除但参考仍在那里?
由于
P.S。这是我用来打印数组的过程:
'Procedure to print the contents of a string array
Public Sub PrintArrayContents(ArryStrg() As String)
Dim i As Integer
For i = LBound(ArryStrg) To UBound(ArryStrg)
Debug.Print i & ": "; ArryStrg(i)
Next i
End Sub
答案 0 :(得分:2)
这些可能是隐藏的表格。
您可以转到Navigation
窗格,然后右键单击All Access Objects
并选择Navigation options
,在Access 2007中显示它们。
这将打开一个对话框,供您显示隐藏的对象。
答案 1 :(得分:1)
这些表可以是垃圾或链接表,因为链接被破坏或者垃圾和链接表同时存在于UI上。
尝试在数据库(备份数据库文件首先!)上“压缩并修复”并重新执行您的功能,看看您是否获得相同的结果集。如果你这样做,请阅读表属性'以试图找出表所属的位置以及它们是什么(链接表或基表)。检查LastUpdated,Updatable,SourceTableName,也许RecordCount属性以获取有关怪人的一些信息:)
如果你仍然看不到发生了什么,首先,读取系统表以找出“额外的表”元数据(例如,MSysObjects告诉你可以帮助的obj.type),然后尝试执行查询那些表,值 - 或错误 - 返回可能会告诉你这些人属于哪里
我怀疑,但有可能(因为它是访问:P)有些表只是“隐藏”。您可以在导航窗格中打开/关闭“显示隐藏的表格”。
请回复你的发现,我对结果非常好奇。
答案 2 :(得分:0)
我想我会添加这个答案以涵盖MS Access 2003.要查看隐藏的对象,请执行以下操作:
您现在应该能够在数据库中看到隐藏的表等。