有没有一种方法可以在两个Jet(.mdb)数据库上获得差异报告?

3

我有一些代码依赖于一个相对较小的MS Jet数据库(在Access中创建)。我们的源代码控制过程远未达到应有的水平(这是一个需要立即解决的问题),我们现在有两个相同数据库的版本。编辑“另一个”版本的人已经离开,无法为我提供他所做更改的提示。那么,找到两个数据库版本中实际数据的差异的最佳方法是什么?


这是一个数据还是应用程序的问题?也就是说,您是需要比较存储在Jet MDB中的数据表,还是需要比较两者之间的表单/报告等等?如果是后者,Remou提出的SaveAsText建议是最佳解决方案。 - David-W-Fenton
你的每个表是否都有唯一键? - Fionnuala
你是在询问每张表格是否都有一个主键吗?如果是的话,是的,每张表格都有一个主键。否则,我不确定你在问什么。抱歉,数据库不是我拥有很多经验的领域。 - TJ_Fischer
4个回答

2
将所有表格和模块输出到文本文件中,并使用文本比较工具。
例如:
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格式化”注释粘在我们优秀答案里是怎么回事? - David-W-Fenton
我加入它们是因为SO以一种奇怪的方式格式化VBA。感谢您的卓越表现 :) - Fionnuala
Remou - 为什么不把注释也缩进呢?只是因为 SO 把撇号解释为字符串的开头,然后着色出现问题吗? - BIBD
不仅仅是撇号会引起问题,斜杠也是。并且你不能通过添加额外的撇号来解决斜杠的问题。所以我对修复这两个问题感到厌烦了。现在有一半的时间我甚至都不会费心使用双撇号了。 - Fionnuala

0
我制作了一个应用程序,可以比较和导入/导出两个Microsoft Access文件(mdb或accdb)之间的数据库对象。它被称为“AccdbMerge”,可以在此处下载:https://ksdbmerge.tools/accdbmerge 基本上,它自动化了Remou提供的方法。

0

只有在问题涉及到数据而不是Access应用程序时,这才有用。当然,这也是StackOverflow.com上普遍存在的混淆点,太多人无法区分Access和Jet之间的区别。 - David-W-Fenton

0

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

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

或者您可以运行“工具/分析/文档生成器”并查看对象属性。


如果你有足够的财力,这是一个非常好的选择……FMS工具很昂贵,但它们针对访问并且运行非常良好。 - Seth Spearman

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接