【问题标题】:Is there a way to get a difference report on two Jet (.mdb) databases?有没有办法获得关于两个 Jet (.mdb) 数据库的差异报告?
【发布时间】:2009-03-06 22:42:54
【问题描述】:

我的代码依赖于一个相对较小的 MS Jet(在 Access 中创建)数据库。我们的源代码控制过程远未达到它可能/应该达到的程度(这是一个需要立即解决的问题),我们最终得到了同一个数据库的两个版本。编辑“其他”版本的人不再在身边给我关于他改变了什么的提示。找出两个版本数据库中包含的实际数据差异的最佳方法是什么?

【问题讨论】:

  • 这是数据问题还是应用问题?也就是说,您的意思是您需要比较存储在 Jet MDB 中的数据表,还是您的意思是您需要比较表单/报告/等。两者之间?如果是后者,Remou 的 SaveAsText 建议是最好的解决方案。
  • 每个表都有唯一的键吗?
  • 你是在问是否每个表都有一个主键?如果是这样,是的,每个表都有一个主键。否则,我不确定你在问什么。抱歉,数据库不是我有很多经验的地方。

标签: database ms-access diff


【解决方案1】:

将所有表单和模块输出到文本文件并使用文本比较实用程序。

例如:

Sub ToText()
Dim frm, mdl

For Each frm In CurrentProject.AllForms
    Application.SaveAsText acForm, frm.Name, "c:\docs\" _ 
        & frm.Name & ".txt" 

'SO 格式化

Next

For Each mdl In CurrentProject.AllModules
    Application.SaveAsText acModule, mdl.Name, "c:\docs\" _
        & mdl.Name & ".txt"

'SO 格式化

Next
End Sub

【讨论】:

  • 卡在我们出色答案中的那些“SO 格式”cmets 是怎么回事?
  • 我把它们放进去是因为 SO 以一种奇怪的方式格式化 VBA。并感谢您的出色:)
  • Remou - 为什么不缩进 cmets 呢?是否只是因为 SO 将撇号解释为字符串的开头并且颜色错误?
  • 问题不只是撇号,斜线也有问题,而且你不能用额外的撇号来修复斜线。所以我厌倦了解决这两个问题。这些天有一半时间我什至不用双撇号。
【解决方案2】:

【讨论】:

  • 这只有在问题是关于 DATA 而不是关于 Access 应用程序时才有用。当然,这是 StackOverflow.com 上普遍存在的混淆点,人们也可能无法区分 Access 和 Jet。
【解决方案3】:

有一些工具可以做到这一点:http://www.fmsinc.com/MicrosoftAccess/DatabaseCompare.html

或者您可以查看创建/修改日期,看看是否可以提供线索(更改数据库窗口以显示详细信息)

或者您可以运行工具/分析/记录器并查看对象属性。

【讨论】:

  • 如果您能负担得起,这是一个很好的选择...fms 工具价格昂贵,但它们的目标是访问并且工作得很好。赛斯
【解决方案4】:

我制作了一个应用程序,允许在两个 Microsoft Access 文件(mdb 或 accdb)之间比较和导入/导出数据库对象。它被称为“AccdbMerge”,可以在这里下载: https://www.db-merge-tools.net/accdbmerge

基本上,它自动化了Remou提供的方法

【讨论】:

    猜你喜欢
    • 2015-07-22
    • 2016-09-21
    • 1970-01-01
    • 2015-06-16
    • 2010-10-22
    • 2021-05-09
    • 1970-01-01
    • 2023-03-21
    • 2012-01-24
    相关资源
    最近更新 更多