Crystal Report错误:从代码隐藏提供param时“缺少Param值”

时间:2013-04-11 11:48:08

标签: asp.net parameters crystal-reports

我在网络应用程序中使用水晶报表。我的问题是当我保持EnableDatabaseLogonPrompt =“true”和EnableParameterPrompt =“true”并在提示框中提供信息时,我的报告工作正常。但是当我保持虚假并从代码后面提供信息时,它总是会出现“缺少参数值”或“数据库登录失败”的错误。

我的代码如下:

Aspx文件:

       <CR:CrystalReportViewer ID="CrystalReportViewer1" runat="server" 
            AutoDataBind="True" 
            GroupTreeImagesFolderUrl="" Height="1202px" 
            ReportSourceID="CrystalReportSource1" ReuseParameterValuesOnRefresh="True" 
            ToolbarImagesFolderUrl="" ToolPanelWidth="200px" Width="903px" 
            ToolPanelView="None" EnableDatabaseLogonPrompt="False" 
            EnableParameterPrompt="False" />
        <CR:CrystalReportSource ID="CrystalReportSource1" runat="server">
            <Report FileName="CrystalReport1.rpt">
            </Report>
        </CR:CrystalReportSource>

代码背后:

       ReportDocument reportDocument = new ReportDocument();           
       reportDocument.Load(Server.MapPath("~/CrystalReport1.rpt"));
       string s=@"4EVER3-PC\MSSQLSERVER2";
       reportDocument.SetDatabaseLogon("db", "pwd", s, "databasename", true);
       reportDocument.SetParameterValue("@bankACId", "0");
       reportDocument.SetParameterValue("@fromDate", "4/11/2011 17:01:57");
       reportDocument.SetParameterValue("@todate", "4/11/2014 17:01:57");

       CrystalReportViewer1.ReportSource = reportDocument;
       CrystalReportViewer1.RefreshReport();

请指出此代码有什么问题。它让我疯狂。

2 个答案:

答案 0 :(得分:1)

解决了登录失败错误。

我从另一台电脑上访问数据库,它的防火墙不允许我通过水晶报告连接。所以我将sql server management studio添加到防火墙允许的程序列表中。所以现在解决了连接问题。

所以没有任何参数的水晶报告工作正常。但是当我传递参数时,它强制关闭调试服务器。任何想法应该是什么问题。

这是我的问题的一半答案,可能对那些面临连接问题的人有所帮助。

答案 1 :(得分:0)

Aspx FIle:

  <CR:CrystalReportViewer ID="CrystalReportViewer1" runat="server" 
            AutoDataBind="True" 
            Height="1202px" 
            ReportSourceID="CrystalReportSource1" />
        <CR:CrystalReportSource ID="CrystalReportSource1" runat="server">
            <Report FileName="CrystalReport1.rpt">
            </Report>
        </CR:CrystalReportSource>

代码背后:

 protected void btnShowReport_Click(object sender, EventArgs e)
    {
       LoadReport();           
    }

    private void LoadReport()
    {
        doc = new ReportDocument();
        doc.Load(Server.MapPath("CrSalesReport.rpt"));

        doc.SetDatabaseLogon(AppConfig.ReportServerDSUserName, AppConfig.ReportServerDSPassword, AppConfig.ReportServerDomain, "TexERP", false);

   doc .SetParameterValue("@bankACId", "0");
   doc .SetParameterValue("@fromDate", "4/11/2011 17:01:57");
   doc .SetParameterValue("@todate", "4/11/2014 17:01:57");

        CrystalReportViewer1.ReportSource = doc;
    }