如何将参数传递到文本框c#webform中的水晶报表中的子报表

时间:2014-06-12 13:04:33

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

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

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

我的要求是:

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

例如: 如果Textbox值= 2表示只有id为2的项目才会显示。

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

  1. 需要知道如何将参数传递给晶体报告。
  2. 如何仅显示一次结果(我的代码显示两次相同的结果)
  3. 这是我如何使用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);
                }
            }
    

    但是当我执行代码时,它会在表格中显示所有可用的数据,如下所示 This is the Result of my code

    任何人都可以帮我解决这个问题

    提前致谢

    错误

    “**

      

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

    **“

1 个答案:

答案 0 :(得分:0)

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

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

您可以通过在查询中添加单词DISTINCT来阻止复制:

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

或者您可以在字段

中阻止重复(如果重复时禁止)属性