1.自动填写数值区域
1.1 2种填写方式
当交叉表是固定标题时,数值区域可手工填写也可通过填表公式填写。
通过填表公式填写有2种方式:
方式一:按【行】【列】匹配。针对交叉表赋值是可选择“按【行】【列】匹配”操作,将数据源的数据项与交叉表明细中的“行列标题数据项”设置“按【行】【列】匹配”操作,系统将自动匹配行列标题填写数值区域,下图中“学科”和“学号”为交叉表的行列标题数据项。

方式二:按匹配条件。将交叉表明细中的“行列标题数据项”与数据源的数据项进行匹配,找到指定的行列后再更新,下图中“学号”和“学科”为交叉表的行列标题数据项。

1.2 示例
我们“学生成绩报表”为例,班级学生的学科成绩存放在“学科成绩”中,

为了直观的显示,增加“学生成绩报表”以交叉表的方式显示学生的成绩,报表中已填写科目和学生姓名,单击【查询】时自动填写学员学科的成绩。

实现如下:利用填表公式完成,在【查询】单元格按钮单击事件下,调用数据源“学生学科成绩”,利用赋值公式更新到明细中。
①设计《学生成绩报表》模板,模板样式如下,其中“学科”为行标题,“学号”和“姓名”为列标题,参考
交叉表
进行定义。

②单击【查询】按钮时填写交叉表的成绩,因此需要触发【查询】单元格按钮单击事件,给交叉表明细赋值。
先将“查询”的单元格按钮设置为按钮,再打开“填表公式管理”对话框,在“单元格按钮单击”事件下,添加“查询”数据项 (参考
单元格按钮单击事件
)。

③在【查询】单元格按钮单击事件下,添加“赋值”操作给交叉表明细赋值。先选中“查询”单元按钮单击事件,单击【添加公式】,选择“赋值”操作,给赋值操作重命名“赋值_成绩”。
设置赋值操作,调用
数据源
进行赋值,数据源设置为《学科成绩》模板下的“学生成绩列表(学期,班级)”数据接口,该接口有参数,设置参数绑定,给参数绑定参数值;
对目标表“明细”执行“更新操作”;
给目标数据项赋值,在明细中“学科”和“学号”是行列标题的唯一标识,将默认的“填入值”操作更改为“按【行】【列】匹配”,填写交叉表的“数值”时会先匹配找到对应的行列再填写“成绩”;

④设计
数据接口
“学生成绩列表(学期,班级)”,该数据接口的数据在《学科成绩》模板中,进入该模板进行设计。
“数据源”为本模板;“数据列”必须添加学号、学科和成绩;“数据列”中添加2个参数“学期”和“班级”,根据参数进行筛选;

2.动态标题
动态标题,是指交叉表的行列标题不固定,需要自动填写,可填写部分数据,也可以填写全部。
我们还是以“学生成绩报表”为例,当《学生成绩报表》的样式如下,模板中没有是指定行标题和列标题,单击【查询】按钮时,先填写明细中的“学科”和“学生”,再填写数值区域的“成绩”。

实现如下:利用填表公式完成,在上面的示例中,再增加新的公式。在【查询】单元格按钮单击事件下,调用数据源分别获取“学科列表”和“学生列表”,通过赋值操作先插入明细的标题,最后填写数据区域的“成绩”。
①填写行标题。在已有的【查询】单元格按钮单击事件下(已有赋值_成绩”公式),添加“赋值_学科”的公式,调用数据源“学科成绩.学科列表(学期,班级)”,对明细执行“插入操作”,给目标数据项“学科”赋值“数据源.学科”,并把公式“上移”使其第1个执行。

②设计数据接口“学科列表(学期,班级)”,该数据接口的数据在《学科成绩》模板中,进入该模板进行设计。
“数据源”为本模板;“数据列”为“学科”;“数据列”中添加2个参数“学期”和“班级”,根据参数进行筛选,为了避免重复,勾选“重复数据只显示一次”;

③填写列标题。在【查询】单元格按钮单击事件下,添加“赋值_学生”的公式,调用数据源“学科成绩.学生列表(学期,班级)”,对明细执行“插入操作”,给目标数据项“学号”和“姓名”赋值,并把公式“上移”使其第2个执行。

④设计数据接口“学生列表(学期,班级)”,该数据接口的数据在《学科成绩》模板中,进入该模板进行设计。
“数据源”为本模板;“数据列”添加“学号”、“姓名”;“数据列”中添加2个参数“学期”和“班级”,根据参数进行筛选,为了避免重复,勾选“重复数据只显示一次”;

⑤应用效果。新建报表,填写学期和班级后,单击【查询】按钮,插入行列标题,扩展出新的列(红色框选部分),并填写成绩。
