当数据库移动到另一台服务器时,Crystal Reports不会打开

时间:2014-01-16 05:26:28

标签: c# asp.net crystal-reports

请考虑,我的数据库在一台服务器“RiboServer”和另一台服务器“IISServer”中的IIS。由于RiboServer存在一些问题,我已将数据库恢复到另一台服务器“NewServer”。

由于此更改,我的Web应用程序运行正常。但所有的水晶报告都没有公开。

它显示错误为 ASP.stores_indent_ascx - 无法打开连接。详细信息:[数据库供应商代码:17]无法打开连接。 IndentPOMRV {7BAD9D95-0A37-4041-8CBD-F4A3527C646E} .rpt详细信息:[数据库供应商代码:17]

这是我的代码:

CrystalDecisions.CrystalReports.Engine.ReportDocument rpt =
                new CrystalDecisions.CrystalReports.Engine.ReportDocument();
try
{
    string conn = ConfigurationManager.ConnectionStrings["ConnectionString"].ToString();
    string[] str = conn.Split(';');
    string server = str[0].Substring(str[0].IndexOf(" = ") + 3);
    string database = str[1].Substring(str[1].IndexOf(" = ") + 3);
    string userid = str[2].Substring(str[2].IndexOf(" = ") + 3);
    string password = str[3].Substring(str[3].IndexOf(" = ") + 3);

    rpt.Load(Server.MapPath("~/Purchase/Reports/SupplyPurchaseorder.rpt"));

    for (int i = 0; i < rpt.DataSourceConnections.Count; i++)
        rpt.DataSourceConnections[i].SetConnection(server, database, userid, password);
    rpt.SetParameterValue(0, POID);
    rpt.SetParameterValue(1, UserName);
    rpt.ExportToHttpResponse(CrystalDecisions.Shared.ExportFormatType.PortableDocFormat, HttpContext.Current.Response, true, "SupplyPurchaseOrder");
}
catch (Exception ex)
{
    rpt.Dispose();
    BussinessLayer.RIBOException.Instance.HandleMe(this, ex);            
}

我可以理解上面的错误。但在我的应用程序中,我有更多的水晶报告,很难在每个报告中更改数据库连接。所以请建议任何解决方案来解决这个问题。

1 个答案:

答案 0 :(得分:0)

使用Crystal Reports SDK。 Example.