第8章、数据查询
提供的功能完成。在我的工作台中,我们可以:对模板的数据分类显示、输入查找条件进行查询,等等,这部分内容在前面的《熟练填报》章节中已经学习过了。
在很多情况下,我们对数据的查询不是只针对单一模板,而是需要把多个模板的数据综合起来,或者做一定的加工。本章学习数据查询的各种方法,包括
定义纯查询模板,通过表间公式做综合查询
定义视图
定义“自定义查询”
8.1 设计纯查询模板
通过我的工作台只能完成比较简单的数据查询,更多的时候,我们需要设计查询模板,通过表间公式来完成数据的查询工作。
看这样一个例子,假设您是销售部的统计员,月底您要制作一张本月(2010年5月)销售情况的汇总表,如下图所示:
设想一下您手工制作这张表格时的情形:您把本月发生的订单都拿到手边来,拿过一张《订单》,把上面的订单日期抄写到B4,订单编号抄写到C4,客户名称抄写到D4,…,录入人抄写到I4,然后把这张《订单》放到一边;再拿过一张《订单》,订单日期抄写到B5,订单编号抄写到C5,客户名称抄写到D5,…,录入人抄写到I5,…,最后,每一张《订单》上的信息都已抄到台帐上,2010年5月的《销售台账》就做完了。当然,所谓的“抄写”也可以是“拷贝/粘贴”。
把上面的制作台账的过程用一句话叙述一下,就是:
找来2010年5月1日至2010年5月31日之间登记的所有的《订单》,把其中的信息“抄写/拷贝粘贴”到台账的对应栏目中,每一张《订单》登记台帐中的一行。
注意到我们已经建立了《订单》模板,所有的订单信息都已经输入计算机了,所以这种“抄写/拷贝粘贴”过程完全可以定义成一条表间公式,由计算机自动完成。
8.1.1 建立销售台帐模板
下面我们尝试用另一种方法建立模板----“用已有的Excel文件格式作为表样”。
1)按上图表样建立一个Excel文件,命名为“销售台帐.xls”
2)用Admin帐户登录
3)选择菜单“设计?新建模板”, 弹出“新建模板”窗口
8.1.2 设置本模板为纯查询报表
点击工具栏按钮“模板属性”,弹出如下对话框,在“基本信息”选项卡下,选择“本模板只用做查询,不保存数据”。
8.1.3 按时间查询订单信息
表间公式的来源数据是两个数据表
注意它们和我们以前定义的表间公式相比有了两点不同:1)来源数据是两个表;2)填充方式中有的字段从订单_主表中取值,有的从订单_明细中取值。
手动应用表间公式
1)新填一张《销售台账》,输入起始日期和结束日期
2)单击工具栏上的“应用公式”按钮。
8.1.4 控制表间公式结果的排序
我们可以设置表间公式结果的排序方式。假设我们希望归集到销售台帐中的订单信息按订单日期由早到晚排序,同一天的订单按客户名称排序,可以这样做:
1)打开《销售台帐》模板,进入设计状态。
2)选择菜单“模板?表间公式”。
3)弹出“表间公式窗口”,选中“简单查询”,点击【修改】按钮。
4)弹出“定义表间公式”窗口,点击【填充方式】,弹出“填充方式”窗口。
5)选择“订单日期”的排序方式为“升序”,选择“客户名称”的排序方式为升序。如图。点击【确定】
6)回到“定义表间公式”窗口,公式内容显示如图,在填充方式的“订单日期”和“客户名称”后面加上了排序方式。
7)点击【保存】,回到“表间公式”窗口,点击【关闭】
8)关闭模板。
好了,现在再去填报一下《销售台帐》,应用“简单查询”表间公式,观察一下排序的效果。
8.1.5 表间关联
下面我们来对《销售台帐》模板做一下改进:我们希望同时看到每份订单的销售是由哪个大区实现的。
向数据表中增加字段
1)修改一下《销售台帐》的表样,在右方增加一列:大区
2)选中区域J4:J10,然后右键选择“重复数据项”
3)出现“定义重复数据项窗口”,选择【按行】,上方标题行数1,选中“数据区域可向下扩展”,点击【下一步】
4)在下一步出现的窗口中,选择“添加到本模板上的以下数据表”,表名选择“销售台帐_明细”,点击【下一步】
为什么要做表间关联
现在来分析一下问题。
我们看到,除了“大区”以外,销售台帐上的其它内容都可以从“订单”得到。但是“订单”上偏偏没有大区的信息。
怎么办呢?订单上虽然没有大区的信息,但是有客户的信息,根据客户的信息找到对应的“客户登记表”,就可以查到该客户所属的大区。请看图7-13的示意:
销售台帐的数据来自两个不同的模板----“订单”和“客户登记表”,这两个模板上有共同的数据项“客户编号”,通过这个共同的数据项,我们说两个模板之间有了一种“关联”,同一个客户的“订单”和“客户登记表”的数据可以组合起来,形成销售台帐中的一条信息。
定义带表间关联的表间公式
1)在《销售台帐》模板上新建表间公式,输入公式名称“表间关联查询”,应用方式选择“手动执行”。
2)点击【来源数据】,弹出“选择数据表”窗口。
3)选择三个数据表“订单_主表”、“订单_明细”和“客户登记表”,在窗口下半部分的表格中选择输入表间关联条件
4)点击【确定】,回到“定义表间公式”窗口。
5)继续数据筛选条件和填充方式,最后完成的表间公式如下:
8.1.6 组合条件查询
现在进一步改进《销售台账》模板,在表头再增加两个条件:产品名称和客户名称,
我们希望对四个条件做组合查询:起止时间必须给定,如果给出了产品名称,则查询起止时间段内该产品的订单,否则查询起止时间段内全部产品的订单;客户名称条件也是一样,若给出客户名称,则查该客户的,否则,查全部客户的。下面我们仅用一条表间公式,来涵盖所有可能的组合情况。
1)如下图所示,在“销售台账_主表”中增加两个字段:品名、客户名
2)把已经定义的表间公式“表间关联查询”另存为一条新公式“组合条件查询”。
3)修改“组合条件查询”表间公式,更改其筛选条件,最终结果为:
下面解释一下修改后的筛选条件。我们在筛选条件中增加了两项,首先是:
本报表.销售台账_主表.品名=’’ 或者 订单_明细.产品名称=本报表.销售台账_主表.品名
假设全部订单中包含有p1和p2两个品名,我们看看这个条件会得到什么结果,如果我们不输入品名条件,则无论订单的品名是p1还是p2,上述条件均满足(因为此时,本报表.销售台账_主表.品名=’’,“或者”的前半部分满足),所以能查出所有品名的订单;当我们输入品名条件,比如p1,此时本报表.销售台账_主表.品名≠’’,“或者”的前半部分不满足,对于品名为p1的订单,“或者”的后半部分满足,所以只能查询出品名为p1的订单。
增加的第二个条件,关于客户名的筛选,原理是一样的,只是其中用到了“形如”比较运算符。“形如”是一个字符串比较运算符,我们说A形如B,意思是A包含了B的内容,例如:
“中国北京”形如“北京”,这是成立的,因为“中国北京”中包含了“北京”二字,但是“中国北京”形如“京都”,就不成立了。
利用“形如”比较,用户可以不必记得客户的完整名称,只记得几个字,比如,“客户名”条件处输入“山东”,则可以查询处所有“客户名称”中包含“山东”字样的客户的订单信息。
8.1.7 链接到相关表单
我们在“销售台帐”模板上,通过定义表间公式,可以查询出符合条件的订单列表,但是如果要了解每份订单的完整信息,还需要到我的工作台中具体找到这张订单,打开它,才能看到。下面我们学习一种在查询模板上,方便地查看具体订单的方法:我们在销售台帐上的每个订单号下面加一个超级链接,点击这个链接,直接就可以打开这份订单。如图:
为了达到上述目的,我们需要对“销售台帐_明细”中的“订单号”字段进行设置,指定在该字段上构造一个超级链接,链接到对应的订单。
按以下步骤操作:
1)打开“销售台帐”模板,进入设计状态
2)打开“管理数据表”窗口,选择“销售台帐_明细”表,点击【字段】
3)选中“订单号”字段,点击“链接”下的【…】按钮,弹出字段属性-超级链接窗口。
5)点击【保存】,回到上一级窗口,再次点击【保存】,关闭管理控制台窗口。
6)关闭模板。