>
通过我的工作台只能完成比较简单的数据查询,更多的时候,我们需要设计查询模板,通过表间公式来完成数据的查询工作。
看这样一个例子,假设您是销售部的统计员,月底您要制作一张本月(2007年5月)销售情况的汇总表,如下图所示:
图 9 ? 6 销售台账表样
设想一下您手工制作这张表格时的情形:您把本月发生的订单都拿到手边来,拿过一张《订单》,把上面的订单日期抄写到B4,订单编号抄写到C4,客户名称抄写到D4,…,录入人抄写到I4,然后把这张《订单》放到一边;再拿过一张《订单》,订单日期抄写到B5,订单编号抄写到C5,客户名称抄写到D5,…,录入人抄写到I5,…,最后,每一张《订单》上的信息都已抄到台帐上,2007年5月的《销售台账》就做完了。当然,所谓的“抄写”也可以是“拷贝/粘贴”。
把上面的制作台账的过程用一句话叙述一下,就是:
找来2007年5月1日至2007年5月31日之间登记的所有的《订单》,把其中的信息“抄写/拷贝粘贴”到台账的对应栏目中,每一张《订单》登记台帐中的一行。
注意到我们已经建立了《订单》模板,所有的订单信息都已经输入计算机了,所以这种“抄写/拷贝粘贴”过程完全可以定义成一条表间公式,由计算机自动完成。
下面我们尝试用另一种建立模板----把一个普通的Excel文件“另存为模板”。
1.按上图表样建立一个Excel文件,命名为“销售台帐.xls”
2.用Admin帐户登录
3.打开文件“销售台帐.xls”。
4.选择菜单“模板à另存为模板”
图 9 ? 7 把一个普通的Excel文件另存为模板
5.弹出“新建模板”窗口,选择“建立新模板”。
6.弹出“模板属性”窗口,输入模板的编号、名称,注意要选中“本模板为纯查询报表”。
图7-3设置某模板为“纯查询”
7.设置“初始填报权限”,按【确定】,进入模板设计状态。
8.在销售台帐模板上定义两个数据表:“销售台帐_主表”和“销售台帐_明细”
销售台帐_主表: 主键 区域 字段名 数据类型 必填 填写规范 其它
C2 起始日期 日期
E2:F2 截止日期 日期 当前日期
销售台帐_明细: 主键 区域 字段名 数据类型 必填 填写规范 其它
B4:B10 订单日期 日期
C4:C10 订单号 文字(20字以内)
D4:D10 客户名称 名称或地址
E4:E10 产品名称 名称或地址
F4:F10 规格型号 文字(100字以内)
G4:G10 订货数量 小数
H4:H10 订货金额 金额
I4:I10 销售员 文字(20字以内)
表间公式的来源数据是两个数据表
在销售台帐模板上定义这样一条表间公式:
图 9 ? 8 表间公式的来源数据是两个表
注意它们和我们以前定义的表间公式相比有了两点不同:1)来源数据是两个表;2)填充方式中有的字段从订单_主表中取值,有的从订单_明细中取值。
手动应用表间公式
1.新填一张《销售台账》,输入起始日期和结束日期
2.单击工具栏上的“应用公式”按钮。
图 9 ? 9 手工应用表间公式
3.弹出应用公式对话框,选中“简单查询”左侧的复选框,按【应用】,如图:
图 9 ? 10 选择要应用的表间公式
我们可以设置表间公式结果的排序方式。假设我们希望归集到销售台帐中的订单信息按订单日期由早到晚排序,同一天的订单按客户名称排序,可以这样做:
1.打开《销售台帐》模板,进入设计状态。
2.选择菜单“模板à定义表间公式”。
3.弹出“表间公式窗口”,选中“简单查询”,点击【修改】按钮。
图 9 ? 11 修改表间公式
4.弹出“定义表间公式”窗口,点击【填充方式】,弹出“填充方式”按钮。
5.选择“订单日期”的排序方式为“升序”,选择“客户名称”的排序方式为升序。如图。点击【确定】
图 9 ? 12 设置表间公式结果的排序
6.回到“定义表间公式”窗口,公式内容显示如图,在填充方式的“订单日期”和“客户名称”后面加上了排序方式。
图 9 ? 13
7.点击【确定】,回到“表间公式”窗口,点击【关闭】
8.关闭模板。
好了,现在再去填报一下《销售台帐》,应用“简单查询”表间公式,观察一下排序的效果。
下面我们来对《销售台帐》模板做一下改进:我们希望同时看到每份订单的销售是由哪个大区实现的。
向数据表中增加字段
1.修改一下《销售台帐》的表样,在右方增加一列:大区
图 9 ? 14 在《销售台帐》的表样中增加一列
2.选中区域J4:J10,然后选择菜单“模板à定义重复数据项”
3.出现“定义重复数据项窗口”,选择【按行】,上方标题行数1,选中“数据区域可向下扩展”,点击【下一步】
4.在下一步出现的窗口中,选择“添加到以下数据表”,表名选择“销售台帐_明细”,点击【下一步】
图 9 ? 15 新数据项添加到数据表
5.设置“大区”的数据类型,然后点【完成】
图 9 ? 16 设置新数据项的数据类型
为什么要做表间关联
现在来分析一下问题。
我们看到,除了“大区”以外,销售台帐上的其它内容都可以从“订单”得到。但是“订单”上偏偏没有大区的信息。
怎么办呢?订单上虽然没有大区的信息,但是有客户的信息,根据客户的信息找到对应的“客户登记表”,就可以查到该客户所属的大区。请看图7-13的示意:
销售台帐的数据来自两个不同的模板----“订单”和“客户登记表”,这两个模板上有共同的数据项“客户编号”,通过这个共同的数据项,我们说两个模板之间有了一种“关联”,同一个客户的“订单”和“客户登记表”的数据可以组合起来,形成销售台帐中的一条信息。
图 9 ? 17 表间关联的示意
定义带表间关联的表间公式
1.在《销售台帐》模板上新建表间公式,输入公式名称“表间关联查询”,应用方式选择“手动执行”。
2.点击【来源数据】,弹出“选择数据表”窗口。
3.选择三个数据表“订单_主表”、“订单_明细”和“客户登记表”,在窗口下半部分的表格中选择输入表间关联条件
图 9 ? 18 输入表间关联条件
4.点击【确定】,回到“定义表间公式”窗口。
5.继续数据筛选条件和填充方式,最后完成的表间公式如下:
图 9 ? 19 带表间关联条件的表间公式
现在进一步改进《销售台账模板》,在表头再增加两个条件:产品名称和客户名称,
我们希望对四个条件做组合查询:起止时间必须给定,如果给出了产品名称,则查询起止时间段内该产品的订单,否则查询起止时间段内全部产品的订单;客户名称条件也是一样,若给出客户名称,则查该客户的,否则,查全部客户的。下面我们仅用一条表间公式,来涵盖所有可能的组合情况。
1.如下图所示,在“销售台账_主表”中增加两个字段:品名、客户名
图 9?20表头增加条件字段
2.把已经定义的表间公式“表间关联查询”另存为一条新公式“组合条件查询”。
3.修改“组合条件查询”表间公式,更改其筛选条件,最终结果为:
图 9?21组合条件查询表间公式
下面解释一下修改后的筛选条件。我们在筛选条件中增加了两项,首先是:
本报表.Sheet1:品名=’’或者 订单_明细.产品名称=本报表.Sheet1:品名
假设全部订单中包含有p1和p2两个品名,我们看看这个条件会得到什么结果,如果我们不输入品名条件,则无论订单的品名是p1还是p2,上述条件均满足(因为此时,本报表.Sheet1:品名=’’,“或者”的前半部分满足),所以能查出所有品名的订单;当我们输入品名条件,比如p1,此时本报表.Sheet1:品名≠’’,“或者”的前半部分不满足,对于品名为p1的订单,“或者”的后半部分满足,所以只能查询出品名为p1的订单。
增加的第二个条件,关于客户名的筛选,原理是一样的,只是其中用到了“形如”比较运算符。“形如”是一个字符串比较运算符,我们说A形如B,意思是A包含了B的内容,例如:
“中国北京”形如“北京”,这是成立的,因为“中国北京”中包含了“北京”二字,但是“中国北京”形如“京都”,就不成立了。