Crystal报告:无法打开连接

时间:2015-08-09 09:12:22

标签: c# mysql visual-studio-2012 crystal-reports odbc

我的数据库是一个远程的Mysql数据库,我可以通过各种PC访问我的应用程序的水晶报告,但是一台PC有问题,即使我安装了mysql连接器并创建了一个使用ODBC成功连接我的数据库。但是当我加载报告时,它会显示一条消息"无法打开连接" enter image description here

我使用以下代码进行手动连接:

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);
                }
            }

我得到了这个例外:

    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)

2 个答案:

答案 0 :(得分:0)

经过几天的努力,我设法解决问题,原来我必须在有这个问题的PC上安装MySQL ODBC 32Bit版本,即使该PC已经安装了MySQL ODBC但它是64位版本。 所以,如果有人遇到类似的问题,那么我建议你安装两个版本的MySQL ODBC,如果你的PC是64位PC。

答案 1 :(得分:0)

我遇到了同样的问题,最后经过 2 天的研究,我能够通过添加以下代码来解决问题

reportDoc.SetDatabaseLogon(userId, password, serverName, database, true);
reportDoc.VerifyDatabase();
reportDoc.Refresh();
相关问题