罗斯文数据库学习连载(37)

发表时间:2008/4/28 22:19:29 评论(2) 浏览(12282)  评论 | 加入收藏 | 复制摘 要:“各国雇员销售额”报表正 文:8.“各国雇员销售额”报表“各国雇员销售额”报表实现按国家和雇员分组打印销售额,并计算小计、百分比、总计等。运行时需要输入日期参数。如果雇员的总销售额>5000时,还会显示“超额完成”标签。这个报表中没有用到宏,有关功能是通过VBA编程来实现的。进入设计视图

报表的记录源是“各国雇员销售额”查询,而“各国雇员销售额”查询是个参数查询,所以在报表运行时提示要求输入参数。报表页眉中包含报表标题和一个统计的日期范围,这个范围是由一个名为区域的文本框实现的。文本框的控件来源为:“="销售额:从 " & [起始日期] & " 到 " & [终止日期]”,它用“&”字符串连接符将三部分的字符串连接起来,其中“起始日期”和“终止日期”是数据源中的参数,可以直接在报表中使用,从而在运行时跳出提示框要求输入。报表页眉设置了背景色。页面页眉无内容国家页眉是组页眉,按国家分组。包含一个标签,一个“国家”文本框,用一条粗线作分隔。“=[姓氏] & [名字]”页眉是一个二层组页眉,嵌套在第一层国家组中,按姓名分组。由于并没有直接的姓名字段,所以将“姓氏”和“名字”用连字符连起来使用。“保持同页”设置为“与第一条详细记录”,表示该组中的内容,第一条数据要与组页眉在同一页。本组页眉中有一个显示姓名的文本,及一些提示标签,给主体内容以标示。另外还有一些分隔线。设成红色字体的“超额完成”是否显示是通过代码来实现的。要在代码编缉器(VBE)中写入代码,我们可以通过事件属性进入VBE(VB编程简介在下一节)。在这里我们先定位到“=[姓氏] & [名字]”页眉,双击该节前的小框框会弹出属性窗口,切换到事件属性,如下图

我们可以在组页眉格式化中加入代码,点击右侧的生成器(有…的小方框),就会打开VBE窗口,并自动加上sub过程的开始与结束语句,我们只需在只间写上要执行的语句即可。If Me!销售人合计 > 5000 ThenMe!超标标签.Visible = TrueMe!SalespersonLine.Visible = TrueElseMe!超标标签.Visible = FalseMe!SalespersonLine.Visible = FalseEnd If这里用到一个条件结构,IF...then…else…END IF。具体可查看帮助,结合实例的意思如下,销售人合计>5000时,超标标签的内容“超额完成”就显示出来,下面的横线也可见;否则超标标签不可见,下面的横线也不可见。国家页眉中也有一个格式化事件,可以通过同样的方法查看,内容只有一行“Page = 1”,这个语句的含义为当一个新的国家组开始时,该页的页码显示为1。主体节包含四个文本框控件,前两个来自于数据源中的字段,“占销售人总销售额的百分比”文本框的控件来源为“=[销售金额]/[销售人合计]”, [销售人合计]是姓名页脚中的字段,格式设为百分比。“占国家总销售额的百分比”文本框同些类似,控件来源为“=[销售金额]/[国家合计]”,格式也为百分比,[国家合计]是国家页脚中的字段。“=[姓氏] & [名字]”页脚是与“=[姓氏] & [名字]”页眉相对应的组页脚,包含三个文本框,“雇员合计标题”文本框的控件来源为“="合计:" & [销售人] & ":"”。 “销售人合计”文本框的控件来源为“=Sum([销售金额])”,对本组中的销售金额用聚合函数进行求和,在组页眉或页脚中可以访问本组中的数据。“占国家总销售额的百分比2”的控件来源为“=[销售人合计]/[国家合计]”,与1的区别是这是一个人的总销售额占国家合计的百分比,而不是每笔订单占国家合计的比例。国家页脚中有四个文本框,与“=[姓氏] & [名字]”页脚雷同,只是所在的分组不同,所以访问的数据也不同。可以对比两个相同的控件来源“=Sum([销售金额])”在两个组页脚中所产生的不同数据。理解组的含义。页面页脚中包含日期和页码,背景为灰色。报表页脚中包含全部销售额的汇总,控件来源还是相同的“=Sum([销售金额])”。另外报表中还有一个无数据(NoData)事件,这个事件发生的报表的Open事件之后,如果记录集中无数据,就会执行这个事件,在这里的用MsgBox显示了一个信息,然后退出。如果您没有注册这个论坛,请赶快注册吧,与我在论坛进行交流,共同学习提高。   上一篇   下一篇

(0)

相关推荐