1、 Access 培训基础教程- 报销管理系统第 1 页/共 15 页8.1 第一个报表的制作学习要求:本节预计学习课时为 1小时,重点是:利用向导创建一个报表的操作步骤。对于普通用户来说,窗体是日常操作最为频繁的界面,但是对决策者来说,通常不会直接参与这些比较基础的工作,因此,对他们而言,报表才是最为关键的环节,所谓报表,即是基于当前数据库中所有的数据,或者部分有选择性的数据而产生的数据汇总或数据分析的结果表格,因此,好的报表,必然来源于好的窗体,只有友好、精准、美观的窗体,才能确保数据来源的可靠,从而为报表提供优良的数据来源,从而保证报表的精准和可信,这也是我们在窗体设计的环节,特别注重细节
2、的原因所在。此外,有一点也可以预先说明,那就是报表的属性对话框,以及设计区域、属性设置区,几乎与窗体完全一样,因此,在窗体设计的环节所学到的开发技巧,绝大部分,在报表设计的环节,都是通用的。那么,报表和窗体的区别在哪里呢?所不一样的是设计的目标的不同窗体主要是被用来提供给用户,完成日常的管理工作,而报表则为了分析以及汇总数据,用来了解当前的单位的运行状况,以便为决策提供相关数据方面的依据。第一个报表的制作首先,报表来源于数据,因此,为了报表的可读性,我们预先录入一些报销明细,以便于测试,完成之后,如下图所示:然后,我们关闭当前所有已打开的窗体,再单击左侧窗格上的按 钮,然后,在下拉列表中选择【
3、报表( R)】 ,切换到报表 列表,则如下图所 示:Access 培训基础教程- 报销管理系统第 2 页/共 15 页在当前版本的平台系统中,没有任何平台预定义的报表在以前的教程中,我们极少使用向导,但由于报表的设计,相对比较复杂,因此,为了简化初学者的难度,我们不妨使用向导来创建第一个报表。接下来,单击【创建】菜单下的按 钮,启动报表创建向导,则如下图所示:我们知道,表是存储数据最基本的单元,因此,高效,简约(通常严禁冗余) ,是设计表时最基本的考量,但也往往因为严禁冗余而显得可读性不佳,而查询则不同,查询的设计,往往会考虑到可读性的需求,因此,会通过计算产生大量的冗余,因而可读性也相对很好
4、。由于报表的设计目标,可读性也是第一需求,所以,我们选择查询作为数据来源(也就是报表属Access 培训基础教程- 报销管理系统第 3 页/共 15 页性设置区中【数据】选项卡中的【记录源】属性) ,因此,我们在【表/查询(T)】中选择“查询:qryBxmx”作为记录源。作为教程的第一个报表,我们的设计目标不妨就简单一点:即汇总各个报销类别的报销总金额,比如,当前已经报销的电话费总额是多少,资料费总额是多少有了设计目标之后,就要分析这个设计目标,究竟涉及到哪些表和查询中的哪些字段。由于当前的表的结构非常简单,因此,我们可以迅速地得出结论即需要 qryBxmx查询中的 lbmc(即类别名称)和
5、bxje(即报销金额)字段。因此,我们将这两个字段从【可用列表(A ) 】列表中通过 按钮,移动到【选定的字段(S)】列表中,完成之后,如下图所示:然后,单击【下一步(N)】按钮,则如下图所 示:Access 培训基础教程- 报销管理系统第 4 页/共 15 页当前的界面,询问我们是否需要分组当然要分组,分组是汇总统计的前提条件,为了分组,我们双击左侧方格中的lbmc 字段,或者选定 lbmc 字段之后,再通过单击 按钮来实现分组(分组之后,单击 按钮,可以取消分组) ,完成之后,则如下图所示:然后,单击【下一步(N)】按钮,则如下图所 示:Access 培训基础教程- 报销管理系统第 5 页
6、/共 15 页当前界面,可以排序,以及选择是否进行汇总排序功能,大多用在日期和数字类型的字段上(当然,其他字段也可以使用) ,在这里,毫无疑问,我们当选择bxje 字段来排序,至于升序还是降序,可以根据自己的喜好来选择,我们这里选择保持默认的升序,完成之后,如下图所示:然后,再单击【汇总选项(0)】按钮,则如下图所 示:Access 培训基础教程- 报销管理系统第 6 页/共 15 页由于我们是需要进行汇总统计的,所以,我们这里选择汇总,至于是否需要显示明细数据,以及是否计算汇总的百分比,这个可以根据自己的需要,明细数据,我们这里就不显示了,但要计算汇总百分比,设置完成之后,如下图所示:完成之
7、后,单击【确定】按钮,返回向导对话框,然后再单击【下一步(N )】按钮,则如下图所 示:Access 培训基础教程- 报销管理系统第 7 页/共 15 页当前的这个界面,是关于页面布局的一些选项,在这里,我们保持默认即可(也可以事后再来测试,以便查看各种选项的实际效果) 。接下来,单击【下一步(N )】按钮,则如下图所 示:当前的界面,是关于报表命名的现在是否还记得我们在一键生成【报销明细】操作界面的环节曾预先指定了一个报表名称?即 rptBxmx。现在,如若我们将 这个预留名称指定给该报表,那我们就可以通过报销明细窗体(生成的报销明细窗体)的【报表预览】按钮直接浏览该报表那么,在这里,我们就
8、将该预留命名指定给当前正在准备生成的报表。Access 培训基础教程- 报销管理系统第 8 页/共 15 页至于生成之后,是要预览,还是要直接修改报表设计从教学的流程来说,我们当然是要先行预览。设置完成之后,如下图所示:然后,单击【完成(F )】按钮,则如下图所 示:如上图,当前通过向导生成的这个报表,明显不太理想,比如,标题就显得很不好,然后,一些英文的字段名称也直接显示了出来,对普通用户而言,也是没有必要的,此外, 【总计】标签所对应的Access 培训基础教程- 报销管理系统第 9 页/共 15 页文本框,由于长度过窄,所以,计算出来的数据,也没有办法完全正常显示这些现象,明显需要修改。
9、我们在当前报表浏览页面直接单击鼠标右键,选择【报表设计(N) 】命令,或者单击左 侧窗格中的报表名称,然后选择【设计视图(D ) 】命令,都可以直接 切换到该报表的设计视图,如下图所示:在界面的布局方面,窗体和报表几乎完全一样,因此,我们可以用我们在前面课程中学习的布局调整方面的技巧,来调整一下当前的布局,并进行一些标签、文本框内容的修改,完成之后,如下图所示:Access 培训基础教程- 报销管理系统第 10 页/共 15 页以上的这些修改,除了【总计】标签所对应的文本框,是需要将其长度拉宽之外,其他的修改,都是直接将相关的字母和英文替换成相应的中文即可(页面页脚中的文本框例外) 。接下来,
10、调出报表的属性设置区,将其【格式】选项卡中的【标题】属性命名为:按报销种类汇总一览表,然后,关闭属性对话框,并保存报表设计,然后,再单击工具栏上的按钮 ,然后在下拉列表中选择【报表视图(R)】 ,如下图所示 :Access 培训基础教程- 报销管理系统第 11 页/共 15 页切换到报表视图之后,则如下图所示:如上图所示,我们已经完成了所有的设计目标。 8.2 静态与动态的多样呈现学习要求:本节预计学习课时为 0.5 小时,重点是:在快速开发平台中应用动态报表。报表既然已经制作完成,那么,我们就可以在平台的环境中去进行浏览和测试,接下来,我们切换到窗体列表,然后,双击 SysFrmLogin
11、窗体启动登录,待登录完成之后,再双击【报销明细(生成) 】节点,如下图所示:Access 培训基础教程- 报销管理系统第 12 页/共 15 页接下来,我们单击【打印预览】按钮,则如下图所示:这就是先前在一键生成窗体时预留报表名称的好处不用再去修改窗体的设计并添加相关代码,只需要把制作好的报表的命名与先前预留的报表名称保持一致即可。当然,我们也可以把这个报表,添加为单独的节点。接下来,我们就这样去做先关闭报表浏览,然后双击右侧的【开发者工具】节点下的【导航菜单编辑器】节点,然后在弹出的【导航菜单编辑器】对话框中,选择任意一个一级节点,比如【报销明细(生成) 】 ,然后单击【添加同级节点(B)
12、】按钮,接下来,填写相关内 容,完成之后,如下图所示:Access 培训基础教程- 报销管理系统第 13 页/共 15 页设置完成之后,单击【保存(S 】按钮,就可以得到 一个新的一级节点,如下图所示:接下来,我们双击这个【报销种类汇总】的节点,就会发现,所得到的效果,和刚才单击【打印预览】按钮的效果是完全一样的因此,我们要善于思考,学会设计一个目标多个解决方案的思路,这样,就可以游刃有余地进行各种个性化的设置和开发。现在,我们再思考一个问题那就是通过【报销种类汇总】的节点来浏览报表,与通过窗体的【打印浏览】来浏览报表,是否完全一样呢?答案是:不一样。哪里不一样呢?我们再次双击【报销明细(生成
13、) 】节点,然后设置一些查询条件,比如:【类别名称】 【包含】电话费,然后单击【查询】按钮,执行查询,则如下图所示:Access 培训基础教程- 报销管理系统第 14 页/共 15 页然后再单击【打印预览】按钮,则如下图所示:现在看看到底发生了什么?没错,在执行了查询之后,只根据当前的结果集来进行汇总生成的报表与当前查询同步,这也是报表最起码的功能,但是,刚才的那个【报销种类汇总】节点,却只能生成一种结果,因而,就没有当前的报表灵活因此,通过节点来浏览报表,就相对来说,显得比较静态不能动态地响应当前用户所执行的查询结果。接下来,我们关闭当前的报表预览,返回刚才的查询界面,再选择一组查询条件,比
14、如:【员工姓名】 【包含】张三,然后单击【查询】按钮,执行查询,则如下图所示:Access 培训基础教程- 报销管理系统第 15 页/共 15 页然后再单击【打印预览】按钮,则如下图所示:如刚才一样,无论如何变更查询条件,始终只根据当前的结果集来进行汇总而我们当初开发报表的时候,并没有进行这个方面功能的开发这也是使用盟威软件快速开发平台比较省心的地方,也是盟威软件快速开发平台的优势所在。那么,这种动态地根据查询结果的报表是如何实现的呢?若是我们对前面的章节,尤其是【报销明细】的查询功能的手工开发环节比较清楚的话,就会明白这一原理这个奥妙就在于根据当前的查询条件,动态地修改报表的【记录源】并将报表按新的【记录源】重新予以加载即可。当然,还有一种解决方案,那就是【记录源】不变,但是,在报表或窗体的【筛选】属性中添加额外的筛选条件,然后再重新予以加载,也可以达到同样的目的至于筛选属性的路径,和【记录源】属性的浏览路径是一样的。这也是一个设计目标的可以通过多种实现手法来实现的又一案例。