基于后台数据生成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 | 字符型,子表关联类名称,如果有多个关联列,可以用一个字符型数组表示。 |