ms-access - 如何循环访问MS Access DB中的所有表

标签 ms-access access-vba

我需要读取Access 2003数据库中100多个表的属性,并将这些详细信息(表名,字段名,类型和大小)写入文件中以作进一步的文档编制。

我从网络搜索中找不到任何有关读取字段属性的信息,只是字段值...

有人可以告诉我我必须声明哪些记录集变量(和语法)才能遍历数据库中的所有表,并从每个表中提取字段名称,类型和大小吗?我会将结果写入文本文件,但我想我可以解决! :)

在解决之前,我一直处于停滞状态。我花了一天的时间手动记录两个表格。一些表有超过100个字段。

最佳答案

带有这些选项的Database Documenter向导应该以最少的工作为您提供所需的内容。



如果这种方法不能令人满意,则可以使用自定义VBA代码收集所需的信息。您可以通过遍历DAO TableDefs集合来检索数据库中表的名称。



Dim db As DAO.Database
Dim tdf As DAO.TableDef
Set db = CurrentDb
For Each tdf In db.TableDefs
    ' ignore system and temporary tables
    If Not (tdf.name Like "MSys*" Or tdf.name Like "~*") Then
        Debug.Print tdf.name
    End If
Next
Set tdf = Nothing
Set db = Nothing


要获取所需的字段详细信息,请将Allen Browne的TableInfo() function ...替换文件写入语句替换为Debug.Print语句。请注意,该函数使用2个辅助函数GetDescripFieldTypeName,这两个辅助函数都包含在该链接页面中。

这是我数据库中一个表的TableInfo()即时窗口输出示例---我认为它包含所需的字段信息。

TableInfo "foo"
FIELD NAME    FIELD TYPE    SIZE          DESCRIPTION
==========    ==========    ====          ===========
id            AutoNumber     4            
MyNumber      Long Integer   4            
MyText        Text           255          
bar           Long Integer   4            
==========    ==========    ====          ===========


调整完函数后,请从上述示例的For Each tdf循环中调用它,并将其每个tdf.name馈入:

TableInfo tdf.name

关于ms-access - 如何循环访问MS Access DB中的所有表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17555174/

相关文章:

ms-access - 用于自动调整 MS Access 2003 表单中控件/子表单大小的 VBA 脚本?

ms-access - 在不暂停应用程序的情况下使用MsgBox

sql - 如何在Microsoft Access的不同上下文中在VBA中使用参数?

c# - update into 语句中 Access 数据库语法错误

ms-access - Access 2007 Engine : How do I include it in my . msi 安装程序?

ms-access - 打开任何桌面VBA Access的文件路径,我需要设置路径以便它可以在任何桌面上打开

sql - Access SQL 如何在 SELECT 查询中进行增量

java - 是否可以从Java调用VBA中的函数?

ms-access - 通过VBScript将数据从Oracle转移到MS Access的最快方法