基本操作:
在考生文件夹下,samp1.mdb数据库文件中已建立两个表对象(名为员工表和部门表)和一个窗体对象(名为fEmp)。试按以下要求顺序,完成表及窗体的各种操作:
(1)设置员工表职务字段值的输入方式为从下拉列表中选择经理、主管或职员选项值。
(2)分析员工的聘用时间,将截止到2008年聘用期在1年(含1年)以内的员工。其说明字段的值设置为新职工。
要求:以2008年为截止期判断员工的聘用期,不考虑月日因素。比如,聘用时间在2007年的员工,其聘用期为1年。
(3)将员工表姓名字段中的所有小字改为晓。
(4)将员工表中男职工的前四列信息(编号,姓名,性别,年龄)导出到考生文件夹下,以文本文件形式保存,命名为Test.txt。要求各数据项间以逗号分隔。
(5)建立员工表和部门表的表间关系,并实施参照完整。
(6)将窗体对象fEmp的记录源设置为表对象员工表。
简单应用:
考生文件夹下存在一个数据库文件samp2.mdb,里面已经设计好表对象tDoctor、tOffice、tPatient和tSubscribe,同时还设计出窗体对象fQuery。试按以下要求完成设计:
(1)创建一个查询,查找姓名为两个字的姓王病人的预约信息,并显示病人的姓名、年龄、性别、预约日期、科室名称和医生姓名,所建查询命名为qT1。
(2)创建一个查询,统计星期一(由预约日期判断)某科室(要求按科室ID查)预约病人的平均年龄,要求显示标题为平均年龄。当运行该查询时,屏幕上显示提示信息:请输入科室ID,所建查询命名为qT2。
(3)创建一个查询,找出没有留下电话的病人,并显示病人姓名和地址,所建查询命名为qT3。
(4)现有一个已经建好的fQuery窗体,如下图所示。运行该窗体后,在文本框(文本框名称为tName)中输入要查询的医生姓名,然后按下查询按钮,即运行一个名为qT4的查询。qT4查询的功能是显示所查医生的医生姓名和预约人数两列信息,其中预约人数值由病人ID字段统计得到,请设计qT4查询。

综合应用:
考生文件夹下存在一个数据库文件samp3.mdb,里面已经设计了表对象tEmp、窗体对象fEmp、报表对象rEmp和宏对象mEmp。同时,给出窗体对象fEmp的若干事件代码,试按以下功能要求补充设计。功能:
(1)将报表记录数据按姓氏分组升序排列,同时要求在相关组页眉区域添加一个文本框控件(命名为tnum),设置其属性输出显示各姓氏员工的人数来。
注意:这里不用考虑复姓情况。所有姓名的第一个字符视为其姓氏信息。而且,要求用*号或编号字段来统计各姓氏人数。
(2)设置相关属性,将整个窗体的背景显示为考生文件夹内的图像文件bk.bmp。
(3)在窗体加载事件中实现代码重置窗体标题为**年度报表输出显示,其中**为两位的当前年显示,要求用相关函数获取。
(4)单击报表输出按钮(名为bt1),调用事件代码先设置退出按钮标题为粗体显示,然后以预览方式打开报表rEmp;单击退出按钮(名为bt2),调用设计好的宏mEmp来关闭窗体。
注意:不允许修改数据库中的表对象tEmp和宏对象mEmp;不允许修改窗体对象fEmp和报表对象rEmp中未涉及的控件和属性;已给事件过程,只允许在*****Add*****与*****Add*****之间的空行内补充语句、完成设计,不允许增删和修改其它位置已存在的语句。
试题解析
基本操作: 本题主要考核点:查阅向导的使用、字段值的设置与修改、导出表、表之间关系的创建、设置窗体属性。
本题解题思路:
第一步:打开考生文件夹下的samp1.mdb数据库。
第二步:打开员工表的设计视图,选中职务字段,在下面的查阅选项卡中的显示控件选择列表框,行来源类型中选择值列表,行来源中输入:经理;主管;职员。然后保存该表。
第三步:双击打开员工表,在员工表的聘用时间字段列的任意位置右击,在筛选目标后填入2008-*-*,按回车键,在其说明字段中输入:新职工,单击工具栏上的取消筛选按钮;在员工表的聘用时间字段列的任意位置右击,在筛选目标后填入2007-*-*,按回车键,在其说明字段中输入:新职工,单击工具栏上的取消筛选按钮。
第四步:在员工表的姓名字段列的任意位置右击,在筛选目标后填入*小*,按回车键,单击编辑菜单下的替换命令,在查找内容右边的组合框中输入:小,在替换为右边的组合框中输入:晓,在匹配右边的组合框中选择:字段任何部分,单击全部替换按钮。然后保存该表。
第五步:单击查询,选择新建(N),在弹出的新建查询窗体上选择设计视图,然后在弹出的显示表窗体上选择员工表,选择查询菜单中的生成表查询,生成新表Test。然后从员工表中选择编号、姓名、性别和年龄字段,性别字段的条件为:男,运行查询,最后以查询1保存查询。选中表Test,点击文件菜单下的导出,在打开的将表Test导出为对话框中,选择保存位置为考生文件夹,保存类型为文本文件,输入文件名Test,然后点击导出,接着点击下一步,接着点击下一步,确认文件导出的路径无误,点击完成按钮。
第六步:选择工具栏中的关系按钮,在打开的对话框中添加员工表和部门表,然后把部门表中的部门号字段拖到员工表中对应字段所属部门的位置上,在弹出的对话框中选择实施参照完整性,单击创建,保存关系。
第七步:选择fEmp窗体,选择设计(D),选中窗体,单击工具栏上的属性按钮,在记录源中选择表对象员工表,然后保存该窗体。
简单应用: 本题主要考的是数据库的查询。
本题解题思路:
(1)点击查询,选择新建(N),在弹出的新建查询窗体上选择设计视图,点击确定按钮,然后在弹出的显示表窗体上选择tDoctor、tOffice、tPatient、tSubscribe表,点击添加按钮,关闭显示表窗体。然后选择题目中所说的六个字段,再在姓名字段的条件中输入:like 王?,以qT1保存查询。
(2)选择查询,点击新建按钮,在弹出的对话框中把tSubscribe和tPatient两个表添加进去,关闭显示表,第一个字段中输入平均年龄:年龄,再点击工具栏上的总计按钮,总计选择平均值,第二个字段选择tSubscribe表的科室ID,在它对应的条件中输入:[请输入科室ID];第三个字段输入Weekday([预约日期])在它对应的条件中输入2,运行查询并以qT2保存。
(3)点击查询,选择新建(N),在弹出的新建查询窗体上选择设计视图,点击确定按钮,然后在弹出的显示表窗体上选择tPatient表,点击添加按钮,关闭显示表窗体。然后选择姓名、地址和电话三个字段,再在电话字段的条件中输入is null,并把显示中的钩去掉,以qT3保存查询。
(4)选择查询,点击新建按钮,在弹出的对话框中把tSubscribe和tDoctor两个表添加进去,关闭显示表,第一个字段中输入医生姓名,总计选择分组,条件中输入[forms]![fQuery]![tName].[Value],第二个字段输入预约人数: 病人ID,总计中选择计数,运行查询并以qT4保存。
综合应用: 本题主要考的是窗体、报表的设计和VBA的数据库编程。
本题解题思路如下:
(1)打开报表对象rEmp的设计视图,选择视图菜单中的排序与分组,在字段/表达式中输入=Left([姓名],1),组页眉选择是,分组形式选择每一个值。选择一个文本框,放到组页眉中,选择工具栏上的属性按钮,在弹出的属性框中设置名称为tnum,并在控件来源属性中输入:=Count(*),保存报表。
(2)打开窗体对象fEmp的设计视图,选择窗体控件,并单击工具栏上的属性按钮,图片属性设置为考生文件夹下的bk.bmp,保存窗体。
(3)打开窗体fEmp的设计视图,并单击工具栏上的属性按钮,单击加载属性右边的…打开代码生成器,在第一处填写:Caption = Format(Date, yy) & 年度报表输出,第二处填写:bt2.FontBold = True,第三处填写:DoCmd.OpenReport rEmp, acViewPreview,第四处填写:ErrHanle:,保存所有设置。
(4)选中bt2按钮,并单击工具栏上的属性按钮,选中单击属性并选择宏mEmp,保存窗体。