基于后台数据生成Word报表

从Foxtable 2020开始,Word报表可以直接基于后台数据生成。

一个例子

如果你设计了一个下图所示的Word报表模板:

假定系统并没有加载员工表,或者员工表只加载了部分数据,我们用下面的代码,一样可以从后台提取未加载的数据来生成报表,而且非常简单:

Dim tm As String  = ProjectPath & "Attachments\资料卡.doc"
Dim
fl As String = ProjectPath & "Reports\资料卡.doc"
Dim
wrt As New WordReport(tm,fl) '注意这里无需指定表名
wrt
.AddDataTable("员工","数据源名称","Select * from {员工} where 姓名 = '张颖'")
wrt
.Build()
wrt
.Show()

提示:

AddDataTable方法用于从后台提取数据生成一个临时表,由Word报表模板根据此临时表生成报表。
例如上面的代码中,
AddDataTable利用Select语句生成了一个临时表,表名为"员工"。
系统在生成Word报表的过程中,优先调用
AddDataTable生成的临时表,无需担心和现有同名表产生冲突。

AddDataTable的语法为:

AddDataTable(Name,DataSouce,SelectString)
AddDataTable(Name,DataTable)

Name 字符型,临时表的名称,必须和报表模板中的表名保持一致。
DataSouce 字符型,用于指定数据源名称。
SelectString 字符型,用于指定Select语句
DataTable DataTable型,用于直接指定一个临时DataTable作为报表的数据来源,此DataTable不能是DataTables中的一员。
GroupTableBuilder、CrossTableBuilder、SQLGroupTableBuilder、SQLCrossTableBuilder、SQLJoinTableBuilder和DataTableBuilder的Build方法,都有一个逻辑参数,将此参数设置为True,将生成一个DataTable,此DataTable将不会包括在DataTables中。

多个数据表和关联

我们可以添加多个临时表,而且可以在临时表之间建立关联。

假定设计了下图所示的报表模版,用于生成出库单。

此模版涉及到出库和出库明细两个表,这两个表通过出库单号建立关联的。

不管系统是否已经加载了这两个表,我们都可以通过下面的代码生成一个出库单:

Dim tm As String  = ProjectPath & "Attachments\出库单.doc"
Dim
fl As String = ProjectPath & "Reports\出库单.doc"
Dim
wrt As New WordReport(tm,fl)
wrt
.AddDataTable("出库","数据源名称","Select * from {出库} where 出库单编号= 'CK-20030726002'") '添加父表
wrt
.AddDataTable("出库明细","数据源名称","Select * from {出库明细} where 出库单编号= 'CK-20030726002'") '添加子表
wrt
.AddRelation("出库","出库单编号","出库明细","出库单编号") '建立关联
wrt
.Build()
wrt
.Show()

提示: AddRelation方法用于在临时表之间建立关联。

AddRelation的语法为:

AddRelation(ParentTable,ParentCol,ChildTable,ChildCol)

ParentTable 字符型,父表名称。
ParentCol 字符型,父表关联列名称,如果有多个关联列,可以用一个字符型数组表示。
ChildTable 字符型,子表名称。
ChildCol 字符型,子表关联类名称,如果有多个关联列,可以用一个字符型数组表示。
 


本页地址:http://www.foxtable.com/webhelp/topics/3310.htm