【问题标题】:How do i pass parameter to subreports in crystal report from textbox c# webform如何从文本框 c# webform 将参数传递给水晶报表中的子报表
【发布时间】:2014-06-12 13:04:32
【问题描述】:

来自 Appdev 的问候(我是 Crystall Report 的新手)

我正在创建一个包含水晶报表的 Web 应用程序。

我的要求是:

应根据文本框中给出的值(网络表单中的文本框)显示报告。

例如: 如果 Textbox value = 2 表示只有 id 为 2 的项目才应该显示。

我的水晶报表有 3 个子报表,例如支票、派对(其中还包含其他表中的值,称为凭证),最后是银行。 这 4 个表由 1 个称为 id 的公共字段链接。

  1. 需要知道如何将参数传递给水晶报表。
  2. 如何只显示一次结果(我的代码显示两次相同的结果)

这就是我在c#中使用.cs文件中的参数绑定水晶报表的方法

public void LoadTransReceipt()
        {
            string Date = "";
            string Sql = "SELECT tREC_NUPKId as ID from TB_TransReceipt where tREC_VCVoucherNo='" + TXTVou.Text.Trim() + "' and tREC_NUIsActive=1";
            SqlDataReader rdr = mobjGenlib.objDBLib.ExecuteQueryReader(Sql.ToString());
            while (rdr.Read())
            {
                Session["ID"] = rdr.GetValue(0).ToString();
            }
            rdr.Close();
            if (!string.IsNullOrEmpty(Session["ID"] as string))
            {
                if (Session["Date"] != null)
                {
                    Date = mobjGenlib.ConvertString(Session["Date"]);
                }

                reportPath = GetReportPath("ReceiptReport.rpt");
                CRReport = new ReportDocument();
                CRReport.Load(reportPath);
                CrystalReportViewer1.ReportSource = CRReport;
                AddParameterToReport("IDP", Session["ID"].ToString());
                AddParameterToReport("ActiveP", 1);
                AddParameterToReport("IDB", Session["ID"].ToString());
                AddParameterToReport("ActiveB", 1);
                AddParameterToReport("IDC", Session["ID"].ToString());
                AddParameterToReport("ActiveC", 1);


                // ConnectionInfo connectionInfo = ConnInfo();
                ConnectionInfo objConnInfo = new ConnectionInfo();
                objConnInfo.DatabaseName = "Demo";
                objConnInfo.UserID = "aa";
                objConnInfo.Password = "aaaa";
                objConnInfo.ServerName = "HOME-PC\\SQLEXPRESS";
                SetDBLogonForReport(objConnInfo, CRReport);
                SetDataSetForMultipleSubReport(objConnInfo, CRReport);
            }
        }

但是当我执行代码时,它会以双倍时间显示表中的所有可用数据,如下所示

谁能帮我解决这个问题

提前致谢

得到错误

" **

指定的参数超出了有效值的范围

**"

【问题讨论】:

    标签: c# crystal-reports visual-studio-2008-sp1


    【解决方案1】:

    从报表中的字段资源管理器中右键单击添加新参数,然后在后面的代码中您必须设置参数的值,例如:

     CRReport.SetParameterValue("@Parameter", TXTVou.Text)
    

    您可以通过在查询中添加单词 DISTINCT 来防止重复,例如:

      "SELECT DISTINCT tREC_NUPKId as ID from TB_TransReceipt where tREC_VCVoucherNo='" + TXTVou.Text + "' and tREC_NUIsActive=1"
    

    或者您可以通过字段中的 (Suppress If Duplicated) 属性来防止重复

    【讨论】:

    • 您好,感谢您的回复...我们也可以使用上面的代码将参数传递给子报告????.
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多