Side-by-Side Reports in Access
A simple technique to view an old and new version of a report during development, while hiding the old (or new) version in production.
A couple of weeks ago, I began refactoring a report that required major revisions. I wanted to be able to compare the old and new versions side-by-side for a variety of situations.
Here's an excerpt of the original report:
Because of the way I implemented this particular report, the changes I needed to make would require a lot of behind-the-scenes refactoring. However, the report itself should look much like the original version.
What I wanted, then, was an easy way to display the old and new versions of the report side-by-side during development.
I would also be releasing beta versions of the changes as I made them to a small group of test users. I did not want the end users to see the two reports side-by-side. Rather, I wanted them to see only the new report and to see it in full screen.
Objectives Recap
In other words, I wanted a solution that provided the following benefits:
- For developers, auto-resize the two reports and display them side-by-side
- For end users, show only the new report and show it full screen
- Use the exact same code to accomplish both 1 and 2 above
The Output
Here are the two views. On the left is the developer view, showing the old and new version of the report side-by-side. On the right is the production view, showing just the new version of the report in full screen.
The Code
Here's the code I used to implement this:
If App.IsDev Then
'Compare the old and new tax certs side-by-side
' (leave this code in place until 6/30/2022 for debugging,
' then delete this code and report object "01_TaxCert_previous")
PreviewReport "01_TaxCert_previous", "ControlNumber=" & Qt(CtlNum)
FillAccessWindow , , "NW", , 0.5
End If
PreviewReport "01_TaxCert", "ControlNumber=" & Qt(CtlNum)
If App.IsDev Then FillAccessWindow , , "NE", , 0.5
NOTE: This technique violates one of my many programming axioms:
Thus, I implore you to NEVER leave old versions of code, forms, or reports in place, even if only temporarily...because you WILL forget to remove it.
The future-dated comment I added to my code is intended to account for this. I have no doubt, though, that come 2030, that temporary comment and report will still be alive and well within my codebase.
Prerequisites
Here's what else you need to make this work.