0

我创建了一个过程,将所有表的名称存储在一个数组内的外部数据库中。这样做的原因是,最终,我将使用它作为参考点来确定需要重新链接哪些表。

下面的代码总共返回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 个表。没有更多 - 没有对链接或任何东西的引用。

那么这些表实际上是从哪里来的呢?这是否意味着它们曾经存在但随后被删除但引用仍然存在?

谢谢

PS这是我用来打印数组的过程:

'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
4

3 回答 3

2

这些可能是隐藏表。

您可以通过转到Navigation窗格在 Access 2007 中显示它们,然后右键单击All Access Objects并选择Navigation options

这将打开一个对话框,让您显示隐藏的对象。

于 2013-05-03T13:24:26.977 回答
1

这些表可能是垃圾表,也可能是在 UI 上不可见的链接表,因为链接已损坏或垃圾表和链接表同时存在。
在数据库上尝试“压缩和修复”(首先备份数据库文件!)并重新执行您的函数以查看是否获得相同的结果集。如果这样做,请阅读表属性以尝试找出表所属的位置以及它们是什么(链接表或基表)。检查 LastUpdated、Updatable、SourceTableName,也许还有 RecordCount 属性以获取有关怪人的一些信息 :)
如果您仍然看不到发生了什么,首先,阅读系统表以找出“额外表”的元数据(例如 MSysObjects告诉你 obj.type 可以提供帮助),其次,尝试对这些表执行查询,
我怀疑,但有可能(因为它是访问:P)某些表只是“隐藏”的。您可以在导航窗格中打开/关闭“显示隐藏的表格”。

请带着你的发现回来,我对结果很好奇。

于 2013-05-03T13:26:14.003 回答
0

只是想我会添加这个答案来涵盖 MS Access 2003。要查看隐藏的对象,请执行以下操作:

  1. 工具
  2. 选项
  3. 选择查看选项卡
  4. 在“显示”选项下,选中“隐藏对象”选项

您现在应该能够看到数据库中的隐藏表等。

于 2013-06-14T13:39:16.153 回答