fengyu77 发表于 2015-5-14 14:02:00

回复 9楼frank.zhang的帖子

我了解到子报表不能够像父报表一样后台动态绑定数据源,是吗?

frank.zhang 发表于 2015-5-14 15:10:00

您好,
子报表可以使用动态绑定数据源,只是由于穿透的方式,增加了程序的复杂度。
可以在LocateDataSource里面进行Table的赋值。

fengyu77 发表于 2015-5-15 08:55:00

回复 12楼frank.zhang的帖子

那可以给个例子吗?谢谢

frank.zhang 发表于 2015-5-15 10:25:00

您好,
经过电话沟通,我提到的这个方式,就是之前您的例子,不再重复上传例子程序。

fengyu77 发表于 2015-5-15 11:06:00

回复 14楼frank.zhang的帖子

请问父报表传递给子报表的参数如何在后台SQL语句上体现?

frank.zhang 发表于 2015-5-15 14:04:00

您好,
我对您这个问题的理解是,如何将从父报表拿到的参数,作为字段嵌入子报表的SQL语句中。
使用参数接收父报表的参数。



在数据集中设置一个参数来传递这个值



使用这个值进行SQL的绑定

fengyu77 发表于 2015-5-15 14:13:00

回复 16楼frank.zhang的帖子

你好,您的理解基本没问题,这种方法我已知道,我需要的是在动态绑定子报表数据时,SQL语句里传参的体现

fengyu77 发表于 2015-5-15 15:30:00

回复 16楼frank.zhang的帖子

你好,我在做传参的的步骤如下,您帮我看看有什么问题。
1)在父报表做导航链接,设置传递参数A1,A2
2)在子报表上新建参数A1,A2
3)新建数据源DataSource、新建数据集DataSet,在数据集参数栏新建参数B1,B2,其值为A1,A2;然后新建字段C1,C2
4)然后WebViewer1_LocateDataSource编码如下:
if (args.DataSourceName == "DataSource")
                {
                  if (args.DataSetName == "DataSet")
                  {
                         GrapeCity.ActiveReports.Expressions.ExpressionObjectModel.Parameter[] array = new GrapeCity.ActiveReports.Expressions.ExpressionObjectModel.Parameter;
                        args.Report.Parameters.CopyTo(array,0);
                        string conStr = "Data Source=USER-PC;Database=test;user id=sa;password=1234@qwer";
                        string strSql = "select time,quantity from test.dbo." + vname + " where (type=" + array + " and datepart(yyyy,time)=datepart(yyyy," + array + ") and datepart(mm,time)=datepart(mm," + array + "))";
                        DataLayer dl = new DataLayer(conStr, strSql);
                        args.Data = dl.DataSetData.Tables;
                  }
                }

frank.zhang 发表于 2015-5-15 15:47:00

您好,
思路很明确,目前可以运行起来吗?

fengyu77 发表于 2015-5-15 15:59:00

回复 19楼frank.zhang的帖子

父报表正常显示,子报表无法显示,提示:报表不可用
页: 1 [2] 3
查看完整版本: HtmlViewer下报表交互