Hi,
I am using the CR 10.5 x86 and x64 runtimes for an application built in VS 2008. The application builds and runs correctly, and I am able to load and view a .rpt using an .mdb as the datasource.
In the x86 version of the application:
I use the CR 10.5 x86 runtimes, and the .rpt file was built using a DAO connection to an .mdb. I apply the following code to dynamically change the datasource:
public bool ChangeDatasource(string DatabasePath) // E.g. DatabasePath = "C:\newdata.mdb"
{
crConnectionInfo.ServerName = DatabasePath;
crConnectionInfo.DatabaseName = DatabasePath;
crConnectionInfo.UserID = "";
crConnectionInfo.Password = "password";
//Loop through all tables in the main report
crDatabase = crReportDocument.Database;
crTables = crDatabase.Tables;
for (int i = 0; i < crTables.Count; i++)
{
crTable = crTables
i ;
crTableLogOnInfo = crTable.LogOnInfo;
crTableLogOnInfo.TableName = crTable.Name;
crTableLogOnInfo.ConnectionInfo = crConnectionInfo;
crTable.ApplyLogOnInfo(crTableLogOnInfo);
bool bOn = crTable.TestConnectivity();
if (!bOn)
MessageBox.Show("Failed to connect to " + crTable.Name);
}
crReportDocument.VerifyDatabase();
}
The above works perfectly in x86.
However, in the x64 version:
Using the CR 10.5 x64 runtimes, the application builds and runs correctly, and displays a simple report just fine.
However, when I use the code above, TestConnectivity() fails and I get the following error during VerifyDatabase():
"Error in File ____.rpt: Invalid mapping type value."
As I understand it, this is because the .rpt was built with a DAO connection, which does not support 64-bit. Thus, I am trying to alter the .rpt to use another connection. My results are as follows:
32-bit DSN, using DAO / ODBC / ADO: I can create the connection, but I still get the "Invalid mapping type value" error when running the code above in x64.
64-bit DSN using ODBC: I get an IM014 "The specified DSN contains an architecture mismatch" error in the Database Expert when trying to set up the connection.
64-bit DSN using ADO: None of the provider options seem to work when setting up the connection in the Database Expert. I get errors like "Data source name not found and no default driver specified".
Note, before anyone asks: Yes, I
do have the 64-bit Access ODBC drivers installed, and working. I use them in another part of my x64 application, and they work correctly.
Any help would be GREATLY appreciated.