下面两段代码都是从帮助文件复制的。请留意用红色大字标明的两行。
当我把代码1的那行改为 rt.DataBinding= ra.databinding
报错:databinding属性为只读
当我把代码2的那行改为 agg.DataBinding.datasource = rt.DataBinding.datasource
报错:未将设置引用到对象的实例
很疑惑,求指教。
另外,感觉“专业报表”的帮助文件似乎应该加上一节,把相关对象的所有属性和方法列举总括一下。
代码1
Dim doc As New PrintDoc
Dim rt As New prt.RenderText
Dim ra As New prt.RenderArea
ra.DataBinding.DataSource = BindTables("订单") '将容器绑定到订单表
ra.DataBinding.Grouping.Expressions.Add("Fields!产品.Value") '根据产品进行分组
ra.Style.Spacing.Bottom = 2
'这一个RenderText无需设置DataBinding,这样每一个分组只打印一次
rt.Text= "[Fields!产品.Value]明细:"
rt.Style.FontSize = 14
rt.Style.FontBold = True
ra.Children.Add(rt)
'这一个RenderText需要单独设置DataBinding,这样才会针对每一个数据行打印副本
rt = New prt.RenderText
rt.Text = "日期:[Format(Fields!日期.Value,""yyyy-MM-dd"")] 客户:[Fields!客户.Value] 数量:[Fields!数量.Value]"
rt.DataBinding.DataSource = ra.DataBinding.DataSource '不能漏掉这一行
ra.Children.Add(rt)
doc.body.Children.Add(ra)
doc.Preview()
代码2
Dim doc As New PrintDoc
Dim rt As New prt.RenderText
Dim Agg As New prt.DataBinding.Aggregate("GroupSum") '新定义统计的名称为GroupSum,名称随意即可。
rt.DataBinding.DataSource = BindTables("订单") '将容器绑定到订单表
rt.DataBinding.Grouping.Expressions.Add("Fields!产品.Value") '根据产品进行分组
rt.Text= "[Fields!产品.Value]: [Aggregates!GroupSum.Value]" '设置打印内容
doc.body.Children.Add(rt)
agg.DataBinding = rt.DataBinding 'Agg的DataBinding属性,应该设为打印对象的DataBinding
agg.Running = 1 '分组统计
agg.ExpressionText = "Fields!数量.Value" '统计字段
doc.DataSchema.Aggregates.Add(agg)'定义好的统计必须添加到报表的DataSchema中
doc.Preview()