Ms access 检查两个Ms Access报告在VBA中是否匹配?

Ms access 检查两个Ms Access报告在VBA中是否匹配?,ms-access,vba,ms-access-2007,Ms Access,Vba,Ms Access 2007,在VBA中是否有方法检查两个access报告中的内容,以查看它们是否都匹配 一种不太理想的方法是使用 DoCmd.OutputTo acOutputReport, "rptMyReport", acFormatPDF, "C:\Reports\MyReport.pdf" 然后使用pdf比较工具,如WinMerge和xdocdiff插件分析差异。这不是一个非常精简的流程 我试图通过比较新版本和旧版本报告的输出来对每个报告进行单元测试,以查看是否有任何损坏或更改。这将归结为老式的调试技术,如插入临

在VBA中是否有方法检查两个access报告中的内容,以查看它们是否都匹配

一种不太理想的方法是使用

DoCmd.OutputTo acOutputReport, "rptMyReport", acFormatPDF, "C:\Reports\MyReport.pdf"
然后使用pdf比较工具,如WinMerge和xdocdiff插件分析差异。这不是一个非常精简的流程


我试图通过比较新版本和旧版本报告的输出来对每个报告进行单元测试,以查看是否有任何损坏或更改。

这将归结为老式的调试技术,如插入临时小计字段和其他比较点。

我想回答我自己的问题。一种方法是使用DoCmd.OutputTo将报告导出为html文件,然后将其读入字符串变量。然后可以将较新文件和较旧文件中的字符串进行比较

下面是一个示例代码:

Public Function fncCheckMatchingReports(strPathOne As String, strPathTwo As String)

    Dim oFSO As Object, oFS1 As Object, oFS2 As Object
    Dim sText1 As String, sText2 As String

    Set oFSO = CreateObject("Scripting.FileSystemObject")
    'Set oFS1 = oFSO.OpenTextFile("C:\Users\Desktop\test.html")
    'Set oFS2 = oFSO.OpenTextFile("C:\Users\Desktop\test2.html")
    Set oFS1 = oFSO.OpenTextFile(strPathOne)
    Set oFS2 = oFSO.OpenTextFile(strPathTwo)

    sText1 = oFS1.ReadAll()
    sText2 = oFS2.ReadAll()

    If sText1 = sText2 Then
        fncCheckMatchingReports = True
    Else
        fncCheckMatchingReports = False
    End If

End Function

总有办法,但数据有限。你能提供样本数据吗?或者至少列出报告中包含的字段?这些报告是否基于相同的查询?还是不同的疑问?是否对报表本身进行了任何计算,或者所有内容都由查询处理?解决方案是否必须使用VBA?