<p>If you have two versions of the same report (.rpt) and you want to establish what the exact differences are, what is the best way to go about this? I've seen some commercial tools to do this, but I'm not too interested in forking out cash for something that should be relatively straight forward. Can I hook into the Crystal API and simply list all of the properties of every field or something? Please someone tell me that there's an Open Source project somewhere that does this... @:-)</p>

<p>@Kogus, wouldn't diffing the outputs as text hide any formatting differences?</p>

<p>@ladoucep, I don't seem to be able to export the report <em>without</em> data.</p>

[{'answer_id': 19974, 'author': 'JosephStyons', 'author_id': 672, 'author_profile': 'https://Stackoverflow.com/users/672', 'pm_score': 1, 'selected': False, 'text': "<p>One helpful technique is to output both versions of the report to plain text, then diff those outputs.</p>\n\n<p>You could write something using the crystal report component to describe every property of the report, like you described.  Then  you could output <em>that</em> to text, and diff <em>those</em>.  I'm not aware of any open source tool that does it for you, but it would not be terribly hard to write it.</p>\n\n<p>@question in the post:\nDiffing the outputs would only show formatting changes if the <em>relative</em> positions had changed.  For example, if i had this:</p>\n\n<p>before:\nFirst name, last name, addresss</p>\n\n<p>after:\nLast Name, First Name, Address</p>\n\n<p>Then that would show up as a difference.</p>\n\n<p>But if I had just bumped the address column over a few pixels, or changed it from plain text to bold, then you are right, that would not show up.</p>\n"}, {'answer_id': 233098, 'author': 'Kramii', 'author_id': 11514, 'author_profile': 'https://Stackoverflow.com/users/11514', 'pm_score': 1, 'selected': False, 'text': '<p>One technique I have used to great effect in the past is to print out reports from both versions based on the same data. I then take the first page from each version, lay one on top of the other (it is important not to mix them up) and hold them up to a window. It is generally quite easy to see any differences, and these differences can be manually annotated with a suitable writing instrument such as a pencil. Repeat for each page in the report.</p>\n\n<p>Admittedly, for large reports this can be quite time consuming and error prone, but these limitataions can be overcome with patience and care.</p>\n'}, {'answer_id': 1729083, 'author': 'craig', 'author_id': 134367, 'author_profile': 'https://Stackoverflow.com/users/134367', 'pm_score': 5, 'selected': True, 'text': '<blockquote>\n  <p>Can I hook into the Crystal API and\n  simply list all of the properties of\n  every field or something? Please\n  someone tell me that there\'s an Open\n  Source project somewhere that does\n  this... @:-)</p>\n</blockquote>\n\n<p>There is in fact, such an API.  I wrote a VB6 application to do just what you asked and more.  I think I even migrated it to VB.Net.  As it was for my own use, I didn\'t spend much time making it \'polished\'.  I\'ve been intending to release it, but I haven\'t had the time...</p>\n\n<p>Another approach that I\'ve used in the past is to create an Access application to help manage large, report-development projects.  One of it\'s many features includes the ability to extract the tables that are used by the report, and the SQL statements used by its Commands and SQL Expressions.  It\'s intent is to give one a global perspective of which reports use which tables.  I probably still have it somewhere...</p>\n\n<p>** edit 1 **</p>\n\n<p>BusinessObjects Enterprise XI (R?) has a feature named \'Meta Manager\'.  It will periodically examine the contents of the Repository and save the results to a database.  It uses the Report-Application Service (RAS) to generate the meta data.  It\'s an additional, 5-figure license, of course.</p>\n\n<p>** edit 2 **</p>\n\n<p>Consider using PowerShell to do the work: <a href="https://github.com/craibuc/PsCrystal" rel="noreferrer">PsCrystal</a>.</p>\n'}]
['https://Stackoverflow.com/questions/19963', 'https://Stackoverflow.com', 'https://Stackoverflow.com/users/1030/']