ms-access - VBScript 从 MSACCESS 导出表关系以便稍后将其放回

标签 ms-access version-control vbscript table-relationships

对于源代码控制,我尝试从 Access 导出表关系,以便能够重新导入它们。据我所知,要做到这一点,我只需要四条信息。

  1. 表名称
  2. 表字段名称
  3. 外部表名称
  4. 外部表字段名称

我记下了前三个信息,但在计算最后一点信息时遇到了问题。通常我的表和字段名称总是相同的,所以这通常不是问题,但我真的很希望这个 vbscript 是否可以解释将来可能不那么明显的时间。这是我正在使用的代码的片段:

Dim db, totalrelations, i, j

Set db = oApplication.CurrentDb
totalrelations = db.Relations.Count
WScript.Echo totalrelations
If totalrelations > 0 Then
    WScript.Echo "opening " & totalrelations
    For i = totalrelations - 1 To 0 Step -1
       'WScript.Echo (db.Relations(i).Name)
       'WScript.Echo (db.Relations.Item(i).name)

       WScript.Echo "Attributes: " &       db.Relations.Item(i).Attributes

 '**            'iterate through the count!!!
       WScript.Echo "Field count: " & db.Relations.Item(i).Fields.Count

       If db.Relations.Item(i).Fields.Count > 0 Then
            For j = 0 To db.Relations.Item(i).Fields.Count - 1
                WScript.Echo j & " Field name: " & db.Relations.Item(i).Fields.Item(j).Name
            Next 
       End If
       WScript.Echo "ForeignTable: " &     db.Relations.Item(i).ForeignTable
       WScript.Echo "Name: " &             db.Relations.Item(i).Name
       WScript.Echo "PartialReplica: " &   db.Relations.Item(i).PartialReplica

       WScript.Echo "propertycount: " & db.Relations.Item(i).Properties.Count
       'Simply repeats everything we already know
       If db.Relations.Item(i).Properties.Count > 0 Then
            For j = 0 To db.Relations.Item(i).Properties.Count -1
                WScript.echo j & " PropertyName:" & db.Relations.Item(i).Properties.Item(j).Name
                WScript.echo j & " PropertyValue:" & db.Relations.Item(i).Properties.Item(j).Value
            Next
       End if

       WScript.Echo "Table: " &            db.Relations.Item(i).Table
    Next 

End If

我以为我可以聪明地检查字段计数并迭代这些字段。然而,笑话是在我身上,因为我在两个不同名称的字段之间建立了关系,并且字段计数仍然为 1。因此,我的聪明才智并没有向我揭示法力的 secret :P 有谁知道我如何才能哄骗这个信息出来了吗?

  1. 表名称 = db.Relations.Item.Table
  2. 表字段名称 = db.Relations.Item.Fields.Item(0).Name
  3. 外部表名称 = db.Relations.Item.ForeignTable
  4. 外部表字段名称 = ??????

最佳答案

你有这个...

" Field name: " & db.Relations.Item(i).Fields.Item(j).Name

要检索外部表中相关字段的名称,请使用以下命令:

" Foreign Field name: " & db.Relations.Item(i).Fields.Item(j).ForeignName

实际上,您不需要显式包含 .Item() 来检索每个集合的 ith<​​/em> 或 jth 成员。所以我会将其缩短为:

" Foreign Field name: " & db.Relations(i).Fields(j).ForeignName

关于ms-access - VBScript 从 MSACCESS 导出表关系以便稍后将其放回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10454023/

相关文章:

javascript - 在 ASP 中从 Javascript 到 VBScript 传递并返回值,反之亦然

sql - 检查 Access 表是否存在

ms-access - 错误 [HY000] 一般错误 : Invalid file dsn ''

svn - Subversion 标记和安全性

git - 将 GIT 和 CDN 用于静态内容

c++ - 从 C++ 通过 activex 读取 Outlook 地址簿随机返回未知错误

excel - 如何最好地在 Access 或 Excel 中使用 VBA 来测试 ODBC 连接?

ms-access - 提示用户保存表单

git - 初始化空 git 仓库

vbscript - 使用 NRPE 执行远程脚本