Reputation: 331
My database is a remote Mysql database, I'm able to access the crystal reports of my application through various PC's but there is a problem with one PC, Even though I installed mysql connector and created a connection with my database which was successful using ODBC. But while I load the report it displays a message "Failed to open connection"
I have used the following code for the manual connection:
cI.ServerName = "Driver={MySQL ODBC 5.3 Unicode Driver};Server=x.x.x.x;Port=3306;Option=3;";
cI.DatabaseName = "dbName";
cI.UserID = "username";
cI.Password = "pass";
foreach (IConnectionInfo info in report.DataSourceConnections)
{
info.SetConnection(cI.ServerName, cI.DatabaseName, cI.UserID, cI.Password);
}
foreach (ReportDocument sub in report.Subreports)
{
foreach (IConnectionInfo info in sub.DataSourceConnections)
{
info.SetConnection(cI.ServerName, cI.DatabaseName, cI.UserID, cI.Password);
}
}
I get this exception:
System.Runtime.InteropServices.COMException (0x800002F4): Failed to open the connection.
Failed to open the connection.
temp_32398d30-5e82-45f2-a356-0abdad3ba4c5 5168_1588_{1AF659C8-D14D-479F-B268-51AD72B9420A}.rpt
at CrystalDecisions.ReportAppServer.Controllers.DatabaseControllerClass.SetTableLocation(ISCRTable CurTable, ISCRTable NewTable)
at CrystalDecisions.CrystalReports.Engine.Table.set_Location(String value)
at School.UserInterface.StudentApp.PrintStudentInformation.connect(ReportDocument report)
at School.UserInterface.StudentApp.PrintStudentInformation.PrintStudentInformation_Load(Object sender, EventArgs e)
at System.Windows.Forms.Form.OnLoad(EventArgs e)
at System.Windows.Forms.Form.OnCreateControl()
at System.Windows.Forms.Control.CreateControl(Boolean fIgnoreVisible)
at System.Windows.Forms.Control.CreateControl()
at System.Windows.Forms.Control.WmShowWindow(Message& m)
at System.Windows.Forms.Control.WndProc(Message& m)
at System.Windows.Forms.ScrollableControl.WndProc(Message& m)
at System.Windows.Forms.Form.WmShowWindow(Message& m)
at System.Windows.Forms.Form.WndProc(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
Upvotes: 2
Views: 6601
Reputation: 43
I was having the same problem, finally after 2 days of research i was able to resolve the issue by adding the below code
reportDoc.SetDatabaseLogon(userId, password, serverName, database, true);
reportDoc.VerifyDatabase();
reportDoc.Refresh();
Upvotes: 0
Reputation: 331
After days of struggle, I managed to solve the problem turns out that I had to install MySQL ODBC 32Bit version on the PC which was having this problem, even though that PC already had MySQL ODBC installed but it was 64 bit version. So, If anyone is facing a similar problem then I suggest that you should install both versions of MySQL ODBC if your PC is 64 bit PC.
Upvotes: 1