以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  关于databinding的疑惑及一点建议  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=42551)

--  作者:东坡一剑
--  发布时间: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()

 

 


--  作者:Bin
--  发布时间:2013/11/15 8:39:00
--  
agg.DataBinding.DataSource= BindTables("订单")