C# 如何从textbox c webform向crystal report中的子报表传递参数

C# 如何从textbox c webform向crystal report中的子报表传递参数,c#,crystal-reports,visual-studio-2008-sp1,C#,Crystal Reports,Visual Studio 2008 Sp1,来自Appdev的问候我是Crystal Report的新手 我正在创建一个包含crystal报表的web应用程序 我的要求是: 报告应根据文本框中给出的web表单中的值文本框显示 例如: 如果Textbox value=2,则表示只有id为2的项才能显示 我的crystal报表有3个子报表,如check,party,其中还包含来自另一个表(称为凭单,最后是银行)的值。 这4个表由一个名为id的公共字段链接 需要知道如何将参数传递给Crystal report。 如何只显示一次结果我的代码显示相

来自Appdev的问候我是Crystal Report的新手

我正在创建一个包含crystal报表的web应用程序

我的要求是:

报告应根据文本框中给出的web表单中的值文本框显示

例如: 如果Textbox value=2,则表示只有id为2的项才能显示

我的crystal报表有3个子报表,如check,party,其中还包含来自另一个表(称为凭单,最后是银行)的值。 这4个表由一个名为id的公共字段链接

需要知道如何将参数传递给Crystal report。 如何只显示一次结果我的代码显示相同的结果两次 这就是我如何使用c中.cs文件中的参数绑定crystal报表的方法

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);
            }
        }
但当我执行代码时,它会以双倍时间显示表中的所有可用数据,如下所示

有人能帮我解决这个问题吗

提前谢谢

将错误获取为

**

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


**

从报告中的“字段管理器”右键单击“添加新参数”,然后在“代码隐藏”中设置参数值,如下所示:

 CRReport.SetParameterValue("@Parameter", TXTVou.Text)
您可以通过在查询中添加单词DISTINCT来防止重复,如:

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

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

Hi感谢您的响应…我们也可以使用上述代码将参数传递给子报告????。