I'm using Crystal Reports based on ADO.NET(XML) connection.
I generate ADO Recordset in VB6 project, I save it like this:
Code:
rsTemp.Save App.Path & "\LocalData\DailyTakeOff.xml", adPersistXML
Then I use this code to display the report:
Code:
    strReportPath =  App.Path & "\LocalData\MyReport.rpt"
    Set varApp = New CRAXDRT.Application
 
    Set varReport = varApp.OpenReport(strReportPath)

            varReport.Database.Tables.Item(1).SetLogOnInfo "XML Data", "", "", ""
            varReport.DiscardSavedData
            varReport.Database.Tables.Item(1).SetLogOnInfo "XML Data", "", "", ""
            varReport.Database.Tables.Item(1).Location = App.Path & "\LocalData\DailyTakeOff.xml"
In some cases the recordset contains values in some fields less than 1. In my case it is 0.09. I see this value in the output of the SQL Server stored procedure. I see tha same value in the recordset. By some reason in the XML file I see that value as 8.9999999999999997E-2.
In Crystal Reports in order to format the field as number I use formula ToNumber({row.CombinedAverageMarkup})>0.
I get an error due to the fact that Crystal doesn't want to see the value containing E-2 as number.
A see most rounded in the recordset to 2 decimals presented as long long numbers. For instance:
52.270000000000003 instead of 52.27
56.109999999999999 instead of 56.11
and many others.

Any help please