Ms access 这些桌子是从哪里来的?访问VBA

Ms access 这些桌子是从哪里来的?访问VBA,ms-access,vba,ms-access-2007,Ms Access,Vba,Ms Access 2007,我创建了一个过程,将外部数据库中所有表的名称存储在数组中。这样做的原因是,最终,我将使用它作为确定哪些表需要重新链接的参考点 下面的代码返回总共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

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

下面的代码返回总共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
问题是,当我打开数据库时,它只有4个表。没有更多-没有链接或任何参考

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

谢谢

另外,这是我用来打印阵列的程序:

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

这些可能是隐藏的表

您可以在Access 2007中显示它们,方法是转到
导航
窗格,然后右键单击
所有Access对象
,然后选择
导航选项


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

这些可能是隐藏的表

您可以在Access 2007中显示它们,方法是转到
导航
窗格,然后右键单击
所有Access对象
,然后选择
导航选项


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

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


请带着您的发现回来,我对结果非常好奇。

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


请带着您的发现回来,我对结果非常好奇。

我想我会把这个答案添加到MS Access 2003中。要查看隐藏对象,请执行以下操作:

  • 工具
  • 选择权
  • 选择“视图”选项卡
  • 在“显示”选项下,选中“隐藏对象”选项

  • 您现在应该可以在数据库中看到隐藏的表等。

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

  • 工具
  • 选择权
  • 选择“视图”选项卡
  • 在“显示”选项下,选中“隐藏对象”选项

  • 您现在应该可以在数据库中看到隐藏的表等。

    答案很好-我认为非常完整:PIt确实是。我假设你知道访问的“超级功能:)很好的答案-我认为非常完整:PIt确实是。我假设你知道访问的“超级功能:)接受了这个问题-还有一个问题,如果你选择“所有访问对象”,为什么对象会隐藏?你会认为它们会显示接受了这个问题-还有一个问题,如果你选择“所有访问对象”,为什么对象会隐藏?你会认为它们会显示