-- 作者:东坡一剑
-- 发布时间:2013/11/14 23:51:00
-- 关于databinding的疑惑及一点建议
下面两段代码都是从帮助文件复制的。请留意用红色大字标明的两行。
当我把代码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()
|