如何从Main Crystal Report传递SubReport中的参数?

时间:2017-01-27 07:06:27

标签: c# sql-server winforms crystal-reports parameter-passing

我有一个运行主报告的存储过程。

            HPR rpt = new HPR();
            rpt.SetDataSource(objdt.fetch("EXECUTE sp_hpr @DATE ='" + dateTimePicker1.Value.ToString("yyyy-MM-dd 00:00:00") + "'", objdt.strconnection));
            crystalReportViewer1.ReportSource = rpt;
            crystalReportViewer1.Refresh();

以上查询为我提供了相关细节。

现在,我想在主报表页脚中只显示一行,首先我在我的存储过程中添加另一个选择查询,但它没有工作然后有人告诉我使用SubReport,我做了但我真的不知道:

  1. 如何执行子报表的第二个存储过程 需要DateTimePicker?
  2. 如何在子报表中传递DateTimePicker的值?
  3. 每次运行程序时都会出现一个对话框并要求我输入参数值!之后,另一个出现在我的登录凭据上。

    请帮忙!

2 个答案:

答案 0 :(得分:0)

按照以下步骤将参数从主报告传递到子报告

  1. 右键点击参数字段'在主报告中创建一个新的参数@mainParam。主要报告中的Field explorer部分。
  2. 以相同的方式在子报告中创建一个新参数@subParam(如果您已在子报告中有参数,则不需要这样做)
  3. 在主报告的设计窗口中右键单击子报告。 您将能够看到一个选项'更改子报表链接'。
  4. 点击该选项并选择@mainParam并使用'>'将其传输到子报告。按钮。
  5. 在子报告中选择要映射到
  6. 的相应字段
  7. 点击确定。

答案 1 :(得分:0)

好的,我明白了,

            HPR rpt = new HPR();  // Crystal Report Object
            rpt.SetDataSource(objdt.fetch("EXECUTE sp_hpr @DATE ='" + dateTimePicker1.Value.ToString("yyyy-MM-dd 00:00:00") + "'", objdt.strconnection));

            //This is how you run your sub report in main report while passing @date parameter in stored procedure. "rptSub" is your sub report name !

            rpt.Subreports["rptSub"].SetDataSource(objdt.fetch("EXECUTE sp_hpr_avg @DATE ='" + dateTimePicker1.Value.ToString("yyyy-MM-dd 00:00:00") + "'", objdt.strconnection));

            crystalReportViewer1.ReportSource = rpt;
            crystalReportViewer1.Refresh();