数据库技术与应用课后习题答案作者陈黎安周玲玲李岚数据库技术与应用.pdf
附录1章后习题参考答案与提示第1章知识题简答题1)解答:A c c e s s是一个在关系型数据模型基础上建立的数据库管理系统软件,具有组织数据、建立查询、建立窗体、打印报表、共享数据、支持超级链接等基本功能。2)解答:表 一 表 是 与 特 定 主 题(如产品或供应商)有关的数据的集合。对每个主题使用一个单独的表意味着用户只需存储该数据一次,这可以提高数据库的效率,并减少数据输入错误。查询一查询是用来操作数据库中的记录的对象,利用它可以按照一定的条件或准则从一个或多个表中筛选并显示出用户希望同时看到的数据,用户可以浏览、查询、打印、修改所筛选出的表中的数据。窗体窗体是一种主要用于在数据库中输入和显示数据的数据库对象。也可以将窗体用作切换面板来打开数据库中的其他窗体和报表,或者用作自定义对话框来接受用户的输入及根据输入执行操作。报表一报表是以打印格式展示数据的一种有效方式。因为能够控制报表上所有对象的大小和外观,所以可以按照所需的方式显示要查看的信息。3)解答:数据库是存储在存储设备中的、结构化的关于某一特定主题或某一特定目的的相关数据的集合。它不仅包括描述事物的数据本身,而且包括相关事物之间的关系。4)解答:数据库管理系统是对数据库中的数据进行存储、处理和管理的系统,它提供了处理数据的手段,同时也提供了组织数据的方法。按照组织数据的方法,可以将数据库管理系统分为3种,关系型数据库管理系统、层次型数据库管理系统和网状型数据库管理系统,其中关系型数据库管理系统应用最为广泛。5)解答:数据库设计需要先进行整体规划,一般情况下,设计一个数据库要经过分析建立数据库的目的、确定数据库中需要的表、确定表中需要的字段、确定主关键字,以及确定表之间的关系5个步骤。选择题单项选择1)B2)C3)D4)A5)B6)B7)A8)C9)A1 0)A1 1)D1 2)B1 3)A1 4)D1 5)A1 6)B1 7)B1 8)D1 9)A2 0)A多项选择1)A BC D2)C D3)A BC D4)BC D5)BC6)BC D7)A BC DX)A BC D9)BC D1 0)A BC D技术应用1)解答:如果每个表只包含关于一个主题的信息,那么就可以独立于其他主题来维护每个主题的信息。2)解答:如果每条信息只保存在一个表中,则只需要在一处进行更新,这样效率更高,同时也排除了包含不同信息的重复项的可能性。3)解答:这样可以最大限度地减少数据库的冗余,也可以避免在数据维护的过程中出现数据不一致的现象。4)解答:需在表中增加一个字段,该字段的值为序列号,以此来标识不同的记录。5)解答:在A cces s数据库中,可以存在一个以上的表,如果不在表之间建立关系,这些表仅仅是互为独立的,它们相当于普通电子表格软件中的表格。只有建立起表之间的关系,才能将表之间静态的相关信息联系在一起动态显示。技能题单项操作训练1)操作提示:略。2)操作提示:参照职业工作站中的操作进行。3)操作提示:观察这个表中的内容,在这个产品表中,车辆名称、供应商、类别字段都有重复的内容,不可作为主关键字,其他字段除车辆代码字段外,都是某辆汽车的具体数据,也不可作为主关键字,只有车辆代码是不重复的,可以作为主关键字。综合操作训练1)操作提示:参照汽车销售公司销售业务画数据流程图。2)操作提示:参 照“汽车销售”数据库功能模块图画业务数据流程图。3)操作提示:查看订单销售表中的内容,可以发现订单销售表中含有订单、雇员、产品、客户等多方面的信息。虽然这些信息都是订单中所需要的内容,但把这些不同的信息放在一个表中,明显不符合每个表应该只包含关于一个主题信息的原则。应该对这个表进行分拆。4)操作提示:查看图1-2 5销售订单表中的内容,明显不符合表中不应该包含重复信息,并且信息不应该在表之间复制的原则。由于存在产品I D、雇 员I D字段,所以车名、名字这两个字段属于多余的复制信息,应该删除。再看表中的内容,由于每张订单有多笔业务,所以也存在着许多复制的信息。应该将该表拆成两个表并在每个表中设置订单I D字段,以订单I D字段为关键字建立两个表之间的关系。5)操作提示:仔细观察图1 2 6,可以发现表中代码车名字段中包含了汽车代码和车名2个内容,不 符 合“以最小的逻辑部分作为字段来保存信息。确定的每个字段应该是最小的、不可再分的”的要求,所以该表设置是不合理的。可以将代码车名字段分拆成汽车代码和车名2个字段,使表中字段的设置符合要求。案例题案 例 1 分析提示:因为这些同学对数据库知识了解不多,使用Access非常容易上手,且遥控航模爱好者人数不是很多,网站的安全性要求也不是很高,所以选择Access做后台数据库是比较好的选择。当网站注册人数多了之后,Access的效率开始下降,所以网站的速度开始变慢。由于网站的速度开始变慢主要是因为注册人数多了,Access效率降低引起的,所以当网站升级改造时,需要更换后台数据库,可以考虑将Access数据库换成SQL Server数据库。案例2 分析提示:这位数据库开发人员所遇到的困境在实际的开发工作中经常遇到。由于开发人员本身的因素和客户对目标应用不太了解,以及对现有系统的描述不够精确,造成开发者和最终用户之间对目标系统所应具有的功能在理解上出现不一致,以致最终完成的系统不能满足使用要求。如果这时修修补补,勉强维持应用系统的运行,最终将会大大缩短这个系统的使用时间,如果推倒重来,软件开发者将付出极高的成本。要想在系统开发的过程中避免这种情况的发生,只有依靠系统开发前严密细致的调研和与用户的充分沟通。开发人员不但要使所设计的目标系统能处理现有系统的所有常规事务,还要能够处理现有系统的一些偶发事件,最好还要考虑使目标系统能更好地发挥计算机的优势,增加一些在手工状态下做不到,在计算机系统中却可以做到的功能,并与客户一起充分讨论目标系统的功能需求。简而言之,这位数据库开发人员所遇到的困境就是因为系统调研不充分所引起的。他们的团队应该牢牢记住,再简单的系统,在开发之前,也一定要做好系统调研分析工作,只有这样才能开发出用户满意的应用系统,少走弯路,免受经济损失。实训题教学建议:建议在做实训之前先让学生真正掌握“汽车销售”数据库的开发过程,了解“罗斯文”数据库。由学生自己规划设计数据库应用系统,意在让学生通过一个真实的应用项目,掌握所学的知识,提高实际的动手能力和培养学生解决实际问题的能力。在实训过程中教师要把精力放在指导学生如何进行系统调研上面,因为这是今后在实际工作中开发一个数据库应用系统最为困难的工作,当学生通过调研得到了企业的需求资料之后,要注意充分发挥学生对一个已有系统加以改进的创造力和想象力,学生无论设计出什么样的数据库系统,只要没有逻辑错误,教师都应该给以肯定。如果由于条件的限制,学生无法到企业进行数据库应用系统的开发实训,教师可以组织他们开发学校的图书馆、教务管理等数据库应用系统。讨论题1)讨论建议:可以从Access数据不能有太多的数据、学习难度较低、适合小企业等多个角度展开讨论。2)讨论建议:“罗斯文”数据库如果所有订单只能处理一笔业务,对订单表的结构设计会有影响,现有的订单分别保存在订单和订单明细两个表中,主要就是因为如果每张订单有多笔业务,如果将数据保存在一个表中,就会使客户资料、订购日期等许多内容产生冗余。基于上述原因,“罗斯文”数据库如果所有订单只能处理一笔业务,可以修改表的结构,也可以不修改表的结构。如果修改表结构,可将订单表和订单明细表合并为一个订单表。如果不修改表结构,会有一点数据冗余。3)讨论建议:可以从如果不进行详细的系统调研,开发者和最终用户之间对目标系统所应具有的功能在理解上就可能出现不一致,以致最终完成的系统不能满足使用要求这个角度展开讨论。通过讨论要使同学们牢牢记住,再简单的系统,在开发之前,也一定要做好系统调研分析工作,只有这样才能开发出用户满意的应用系统,少走弯路,免受经济损失。第 2 章知识题简答题1)解答:以只读方式打开一打开的数据库只能查看不能编辑,可避免误操作对该数据库造成的破坏。以独占方式打开禁止他人打开该数据库,可避免网络中的其他用户同时访问及修改该数据库。以独占只读方式打开禁止他人打开该数据库,打开的数据库只能查看不能编辑。2)解答:创建表有3 种方法,使用表向导创建表、使用数据表视图创建表、在设计视图中创建表。这些方法各有优点和缺点,使用表向导创建表可以借鉴使用系统提供的样表快速建立表,但实际所要创建的系统中基本没有与样表相同的表,人们一般不太喜欢使用这种方法。使用数据表视图创建表,快速方便,但只能使用默认的字段属性,也难受到人们的欢迎。在设计视图中创建表,相对比较麻烦,但却为建表者提供了最大的自由度,建表者可以按照自己的需要,为表设置字段属性,设计符合要求的表,是人们最为常用的建表方法。3)解答:数据类型有文本、备注、数字、日期/时间、货币、自动编号、是/否、OLE对象、超链接、查阅向导。4)解答:在 Microsoft A ccess数据库中为每个主题都设置了不同的表,建立表间关系可以将分布于不同表中的数据作为一个整体来使用,使分散在几个表中有关联的数据能够联系在一起进行同步处理。5)解答:参照完整性是一个规则系统,设置参照完整性之后,M i c r o s o f t A c c e s s 使用这个系统来确保相关表中记录之间关系的有效性,并且不会意外地删除或更改相关数据。选择题单项选择1)B2)C3)A4)B5)C6)D7)C8)A9)B1 0)D1 1)A1 2)D1 3)C1 4)A1 5)C1 6)D1 7)C1 8)c1 9)D2 0)A2 1)B2 2)B2 3)B2 4)D2 5)C2 6)B2 7)B2 8)A2 9)C3 0)D多项选择技术应用1)A B C D2)A C D3)A B C D4)B D5)A B C6)A B D7)A B C D8)A B9)A B C1 0)A B C1)解答:较简单的方法是采用复制/粘贴的方法将图片输入到数据表中。例如,要在“雇员”表中输入雇员照片可以先在资源管理器中找到要输入的照片,选中并复制,然后打 开“雇员”表的数据表视图,选择要输入的记录中的照片字段单击右键,在快捷菜单中选择粘贴命令完成照片的输入。2)解答:不适合。如果用自动编号数据类型作为代码字段,使用者无法控制代码的顺序,因为自动编号数据类型中包含的代码一旦被删除,就再也不能简单地添加进去。3)解答:不能在相关表的外部键字段中输入不存在于主表的主键中的值。但是,可以在外部键中输入一个N u l l 值来指定这些记录之间并没有关系。如果在相关表中存在匹配的记录,不能从主表中删除这个记录。如果某个记录有相关的记录,则不能在主表中更改主键值。4)解答:索引有助于M i c r o s o ft A c c e s s 快速查找和排序记录。表的主键将自动设置索引,而 对 O L E 对象数据类型的字段则不能设置索引。对于其他字段,如果符合下列所有条件,则可以考虑对字段设置索引。字段的数据类型为“文本”、“数字”、“货币”或“日期/时间”。准备搜索字段中保存的值。准备对字段中的值进行排序。5)解答:保存对表的更改时,M i c r o s o ft A c c e s s 将提示检查是否全部已有记录的该字段中都具有值。但是,也可以只要求所有新记录的该字段必须具有输入值,而不管不再更改的字段中的已有记录是否为N u l l (空)值。技能题 单项操作训练1 )解答:参 考【例 2 2】。2)解答:参 考【例 2 一3】、【例 2 4】、【例 2 5】。3 )解答:备注及输入可以打开类别.t x t 然后一条一条记录复制、粘贴。图片可以先在资源管理器中找到要输入的照片选中并复制,然后在类别表的数据表视图选择要输入的记录中的照片字段单击右键,在快捷菜单中选择粘贴命令完成照片的输入。4)解答:在表设计视图中修改。5)解答:在表设计视图中修改。6)解答:略。综合操作训练1)解答:参 考【例 2 7】。2)解 答:参 考【例 2 7】,在选择文件类型时选M i c r o s o ft E x c e l (*.x l s),3)解答:参 考【例 2 7】,在选择文件类型时选M i c r o s o ft E x c e l (*.x l s)。4)解 答:参 考 例 2 7 (,5)解答:参 考【例 2 7 ,在选择文件类型时选M i c r o s o ft O ffi c e A c c e s s。6)解答:在建立或编辑关系时,选 择“实施参照完整性”与“级联更新相关字段”选项就可完成任务。7)解答:建 立“客 户 ”表 与“订单”表之间以“客 户 I D”字段连接的一对多关系,在建立或编辑关系时,选 择“实施参照完整性”、“级联更新相关字段”及“级联删除相关记录”选项就可完成任务。8)解答:建 立“订单”表 与“订单明细”表之间以“订 单 I D”字段连接的一对多关系,在建立或编辑关系时,选 择“实施参照完整性”、“级联更新相关字段”及“级联删除相关记录”选项就可完成任务。9)解答:略。1 0)解答:略。1 1)解答:略。案例题案 例 1 分析提示:随着计算机应用的日益普及,各种应用系统间的数据共享需要越来越多。A c c e s s 数据库应用系统可以直接导入部分系统(如 E x c e l 电子表格、F ox pr o数据库等系统)的数据,但是不可能直接导入任何系统中的数据,也没有一种数据库系统能够做到这一点。但是几乎所有的应用系统都可以输出文本文件。因此,在此前提下,可以认为A c c e s s 数据库应用系统能使用任何应用软件中的数据。案例2分析提示:这位统计员所遇到的问题可能是由于所用的多个表之间没有设置表间关系,或虽然设置了表间关系,但没有设置“实施参照完整性”及其下面的选项所造成的。创建表间关系,可以将分散在几个表中有关联的数据联系在一起进行同步处理,这是-种在数据库中使用的关键技术之一。在创建表间关系的过程中会出现“实施参照完整性”的选择,在数据库的使用过程中,这是一个非常重要的选项。因为对于数据库中有关联的多个数据表而言,当修改其中任意一个数据表中的数据时,可能会影响到它们之间的关系。使用参照完整性这个规则之后,M ic r os of t A c c e s s 将使用这个规则来确保相关表中记录之间关系的有效性,并且不会意外地删除或更改相关数据。在选择了“实施参照完整性”选项后,还应使用“级联更新相关字段”及“级联删除相关记录”选项,这样可以保证多个表中的记录得到同步的更新与删除,大大减少数据库维护的工作量。这位统计员就是重新设置或编辑了表间关系来解决所遇到的问题的。实训题教学建议:在“汽车销售”数据库中完整建立第1 章所设计的表,并设置正确的字段属性,设置表间关系是后续章节所有例题和习题的基础,必须保质保量地完成。本实训的目的就是要将例题和习题中没有要求创建的或创建不完整的表全部创建完成,为后续的学习奠定基础。教师在实训的过程中要督促学生尽力完成实训,对一些学有余力的学生可以让他们为在 第 1 章实训中所创建的数据库应用系统创建完整的表。培养学生解决实际问题的能力。讨论题1)讨论建议:此讨论题本身没有太大的难度,但在组织学生进行讨论的过程中,千万不能就回答一个结论就结束了。要通过讨论让学生对创建数据库、创建表的多种方法有一个全面深刻的了解,明白在什么情况下使用哪种方法创建库、表最方便快捷。2)讨论建议:可以让学生通过在计算机上试验得出讨论结果。使 用“格式”属性可按统一的格式显示数据。“格式”属性只影响值的显示方式,而不影响在表中值的存储方式。而且显示格式只有在输入的数据被保存后才应用,而在字段中不会显示任何信息以建议或控制数据的输入格式。如果要让数据按输入时的格式显示,则不要设置“格式”属性。如果需要控制数据的输入格式,可附加使用输入掩码或用其代替数据显示格式。输入掩码可以确保数据符合定义格式,可以指定输入的值的类型。如果同时定义了字段的显示格式和输入掩码,则在添加或编辑数据时,M i c r os of tA c c e s s 将使用输入掩码,而“格式”设置则在保存记录时决定数据的显示方式。同时,使用“格式”和“输入掩码”属性时,要注意它们的结果不能冲突。3)讨论建议:此讨论题并不是要求学生全面了解A c c e s s 可以导入、导出哪些数据库对象,而是希望通过此题拓宽学生的视野,使学生知道除了数据表之外,还有很多对象可以导入、导出,这是目前许多软件都具有的功能。可以要求学生尝试对不同对象进行导入、导出的试验,并在试验中接触其他系统,在其他系统中导出可以为A c c e s s 所用的对象。第 3 章知识题简答题1)解答:表是用来存放数据的场所,是数据源之所在,而查询是针对数据源的操作命令的集合,相当于程序。2)解答:查询的类型分为选择查询、动作查询和S Q L 查询3 种。选择查询又分为简单选择查询、参数查询和交叉表查询。动作查询又分为更新查询、追加查询、删除查询和生成表查询。S Q L 查询又分为联合查询、传递查询、数据定义查询和子查询。3)解答:总计选项共1 2 项,分为4大类:分 组依据(分组)、总计函数(共 9个)、表达式和总计字段记录限制(条件)。分组用来指定分组字段;表达式用来设置计算字段;条件用来设置对分组汇总的记录进行限制。其他9个总计函数每个都是一种计算,意义分别如下所述。总计一为每一组中指定的字段进行求和运算。平均值为每一组中指定的字段进行求平均值运算。最小值/最大值一为每一组中指定的字段进行求最小/大值运算。计数根据指定的字段计算每一组中记录的个数,但不包括N u ll值即空值。标准差/方差一根据指定的字段计算每一组的统计标准差/方差。第一条记录一根据指定的字段获取每一组中第一条记录中该字段的值。最后一条记录一根据指定的字段获取每一组中最后一条记录中该字段的值。4)解答:A c c es s 查询的实质就是一条S Q L 语句。在 A c c es s 中,建立查询的操作,实际上是生成S Q L 语句的过程。5)解答:所谓表达式,就是用运算符将常量、标识符、函数等连接起来的式子,一般情况下,它返回一个确定的值。其中常量是指不会改变的数值或字符串值;标识符用来表示一个对象或一个对象的属性;函数是一个小程序,它根据参数来进行一定的计算、比较或判断,然后返回一个值。选择题单项选择1)A2)A3)B4)B5)C6)D7)C8)A9)C1 0)C1 1)B1 2)A1 3)B1 4)B1 5)B1 6)B1 7)C1 8)B1 9)D2 0)D多项选择1)A B2)A B D3)A B C4)A B5)A B C6)A B C D7)A B C8)A B D9)A C D1 0)A B D技术应用1)解答:可在查询属性和工具栏中设置。2)解答:在“参数”对话框中的“参数”列中调整上下次序。3)解答:在“行标题”中设定准则用于对记录组执行计算之前要限定分组记录的范围,只对符合条件的记录进行合计计算。即查询先对记录进行分组,然后只对符合准则条件的记录组进行计算。Wher e准则字段用于在记录分组前和计算执行前限定执行计算的记录的范围,即查询先根据准则字段选取符合条件的记录来进行分组,然后进行计算。4)解答:不能直接删除“产品”表中的数据,因为它是处于对于已经建立了关系的表,除非将其所有与之相关的关系都使用“级联删除相关记录”,这样才能进行删除。要注意的是,建立级联删除以后,删除一方关系表的记录时,A c c es s 会自动删除级联表的相关记录。5)解答:当用户需要为查询结果中的字段进行改名显示时,有两种办法:在设计视图中对应的“字段:”单元格单击右键,选 择“属性”,在字段属性对话框中的“标题”文本框中输入新的字段名;或者将插入点放在设计网格中字段名的第一个字母左边,键入“新名称:”即可。技能题单项操作训练1)操作提示:只需使用查询向导即可。2)操 作 提 示:设 定“客 户 ID”字段的限制“条件:为 AAAAA O r Is N u l l,3)操作提示:“订 单 ID”字 段 以“升序”排序;“总价”字段为计算字段,其表达式为:CCu r(订单明细.销售价*数量*(1-折扣)/1 0 0)*1 0 0。4)操作提示:该查询为合计查询。首先按照“类 别 ID”、“类别名称”和“车名”的顺序依次分组,然后再对“扩展订单明细”中 的“总价”字段进行求和运算,并将该字段重命名为“产品销售额”。5)操作提示:S EL ECT 雇员.名字,S u m(销售价*数量)A S销售金额FR O M 雇 员 IN N ER JO IN (订 单 IN N ER JO IN 订单明细ON订单.订单1 口=订单明细.订单 ID)ON雇员.雇员ID=订单.雇员IDGR O U P B Y雇员.名字;综合操作训练1)操作提示:可参考罗斯文数据库中的“各种产品的季度订单”查询创建。该查询是参数查询和交叉表查询相结合的查询。数据源来自于“订单”表、“订单明细”表 和“产品”表。“车辆名称”、“客户”和 订购年份”字段为行标题字段,其 中“订购年份”为计算字段,其表达式为“Y e ar(订购日期)”。列标题字段为计算字段,其表达式为第&Dat e P ar t (q”,订购日期,1,0)&季 度 值 字 段 也 为 计 算 字 段,表达式为“S u m(CCu r(订单明细.销售价*数量*(1-折扣)/1 0 0)*1 0 0)”。用来作为参数的年份字段也是计算所得。表达式为“Y e ar(订购日期)”。该查询的设计视图如图解答3-1 所示。图解答31 各种产品的季度订单”查询设计视图2)操作提示:可参考罗斯文数据库中的“各产品季度销售额”查询创建。该查询是参数查询和合计查询相结合的查询。数据源来自于“类别”表、“产品”表、“订单”表 和“订单明细”表。用于分组的字段依次为“类别名称”、车辆名称”和“发货季度”,其中“发货季度”是计算字段,表达式为“Q t r&Dat e P ar t(q”,发货日期)”。“产品销售额”是表达式字段,其计算表达式为:S u m(CCu r(订单明细.销售价*数量*(b 折扣)/1 0 0)*1 0 0)。参数字段为计算字段,表达式为 Y e ar(发货日期)参该查询设计视图如图解答3 2所示。度 别名称I类别分组.车名产品分相.产融幽a SB,发 告 季 度 中,h*R tsi段裳计月示件字总排显条1话喻人直词年度图解答3-2 各产品季度销售额”查询设计视图案例题案 例 1 分析提示:由于查询可从多个表或查询中提取相关数据,然后能按照不同方式进行查看、更改和计算数据,故能取得很好的效果。案例2分析提示:可创建对应的参数查询,根据用户输入的时间段来自动进行统计工作。实训题教学建议:建议在做实训之前先让学生浏览并参考“罗斯文”数据库的相关查询。首先引导学生根据查询结果分析查询的类型和功能,确定用什么方法创建查询。然后确定查询的数据源和字段来源,哪些为现有字段,哪些为计算字段。如果为计算字段,还需确定对应的表达式。由学生自己设计并创建查询,意在让学生学会根据系统的功能和特点,从实用角度出发,分析用户的各种可能的需求,依次来创建查询。培养学生独立发现问题和解决问题的能力。教师可帮助学生进行一些需求分析工作,并在学生遇到困难时予以适当的指导。同时在评价学生作品时建议以实用性和现实性为主要标准。讨论题1)讨论建议:从表和查询的区别,以及筛选和查询所基于的数据源的不同来进行讨论。2)讨论建议:鼓励学生对每种动作查询都进行重复操作,仔细观察结果,得出结论。然后引导学生从各动作查询的操作特点和表字段的属性特点来分析原因。3)讨论建议:鼓励学生尽可能多地提出各种情况,然后得出结论。4)讨论建议:鼓励学生尝试取消分组、查看结果操作的区别。还可尝试对其他类似查询进行这项操作,由学生自己总结结论。5)讨论建议:建议先让学生在浏览汽车销售系统的各查询的基础上,独立进行归纳总结,鼓励学生以小组的形式进行热烈讨论。老师在各组讨论期间予以适当的引导,然后每组选出代表进行总结发言,最后再由老师在对各组的讨论结果和表现进行分析和评价的基础上,进行最后归纳总结。第 4章知识题简答题1)解答:窗体是A c c e s s 数据库对象之一,是数据库与A c c e s s 应用程序的接口,窗体有多种形式,不同的窗体完成不同的功能。利用窗体,用户可以方便地录入、修改、查询数据库中的记录。2)解答:窗体中的所有信息都包含在控件中。控件在窗体中用于显示数据、执行操作或装饰窗体。3)解答:控件可以是绑定、未绑定或计算型的。绑定控件与基础表或查询中的字段相连,可用于显示、输入及更新数据库中的字段。而未绑定控件则没有数据来源。未绑定控件可用于显示信息、线条、矩形及图像。4)解答:控件属性决定控件的结构、外观和行为,包括它所包含的文本或数据的特性。5)解答:事件是一种特定的操作,在某个对象上发生或对某个对象发生。Ac c e s s 可以响应多种类型的事件,如鼠标单击、数据更改、窗体打开或关闭及许多其他类型的事件。事件的发生通常是用户操作的结果。选择题单项选择1)C2)C3)c4)D5)C6)D7)B8)c9)B1 0)B1 1)C1 2)A1 3)B1 4)C1 5)B1 6)A1 7)D1 8)D1 9)A2 0)D多项选择1)BCD2)BCD3)ABD4)ABD5)ABCD6)BCD7)BD8)ACD9)ABD1 0)AB技术应用1)解答:创建主/子窗体。2)解答:可以在主窗体上创建文本框,使用表达式来引用子窗体上包含计算值的控件。具体方法是在主窗体的文本框的 控件来源”属性框中指定表达式:=子窗体名称.f o rm!子窗体计算文本框名称。3)解答:只需更改窗体的“记录源”属性值为所需要的数据源。4)解答:控件的“标题”是在窗体屏幕上显示的文字信息,控件的“名字”是控件在窗体中被其他控件引用的表示标识。5)解答:没有影响。有影响的是数据源之间所建立的关系。技能题单项操作训练1)操作提示:可利用自动窗体创建。2)操作提示:可利用窗体向导创建。综合操作训练1)操作提示:本练习的关键之处是要求输入一个客户代码后,能够使“客户”表定位到所选的客户记录之上,需要一个输入客户代码文本框的“更新后”事件过程。假设你设置的文本框名字为“输入客户代码查询”,则该文本框的“更新后”事件过程代码如下:P ri v a t e S u b 输入客户代码查询一Af t e rU p d a t e()Me!客户 ID.S e t Fo c u s在客户ID中查找输入代码Do Cmd.Fi n d R e c o rd Me!输入客户代码查询,T ru e,T ru eIf Me!输入客户代码查询 Me!客 户 ID T h e nMs g Bo x(找不到该客户”)En d IfMe!输入客户代码查询.S e t Fo c u sEn d S u b2)操作提示:该题应先创建一个无数据源的窗体,然后添加各种对象。命令按钮中的操作都是从向导中选取的。3)操作提示:这是一个与“订单”窗体功能十分相似的窗体。主要差别是不需要搜集客户信息,并添加了几个按钮。要 求 1图 4-4 8 所示的“零售订单”窗体中涉及多个表,但只含有一个主窗体和一个子窗体,如果直接使用表作为数据源,每使用一个表就需建立一个子窗体,因此需要建立“零售订单查询”及“扩展订单明细”两个查询作为数据源。“零售订单查询”查询设计视图如图解答 4 1 所示,并用窗体向导快速创建一个带子窗体的主窗体。之后修改这个窗体最后完成任务。字排显准图解答4-1 零售订单查询”查询设计视图订单ID客尸ID雇员ID订购日期发货日期到货日期付款付款方式运货费订单订单订单订单订单订单订单订单订单00000000AAAAA Or Is Null Or要求2可通过创建组合框完成。要求3可以通过在“订购日期”文本框中设置默认值属性为D A T E ()完成。要求4可用在子窗体中计算总计值并在主窗体上显示该总计值实现。要求5本功能需要设置两个事件。(1)首先在主窗体中定义变量S H Y,代码如下:O pt i on C om pa re D a t a b a s e 使用数据库次序进行字符串比较。O pt i on E xpl i c i t 使用变量之前要先声明。D i m s h y A s S t ri n g 定义 s h y 记录雇员 I D(2)为主窗体设置一个加载事件,事件过程代码如下:P ri v a t e S u b F orm _ L oa d()I f I s N u l l(M e!客户 I D)O r M e!客户 I D =T h e nM e!客户 I D =A A A A A E n d I fI f I s N u l l(M e!雇员 I D)O r M e!雇员 I D =T h e nM e!雇员 I D =TE n d I fs h y=M e!雇员 I DE n d S u b(3)为“雇 员 I D”组合框设置一个失去焦点事件,事件过程代码如下:P ri v a t e S u b 雇员 I D _ L os t F oc u s ()I f I s N u l l(M e!雇员 I D)O r M e!雇员 I D =T h e nM e.雇员 I D =s h yE n d I fs h y=M e!雇员 I DE n d S u b要求6本功能需要设置四个事件。(1)首先在子窗体中定义变量C H L,代码如下:O pt i on E xpl i c i t 使用变量之前要先声明。D i m c h i A s I n t e g e r,s h y A s S t ri n g(2)为“产 品 I D”设置一个更新后事件,事件过程代码如下:P ri v a t e S u b 产品 I D _ A f t e rU pda t e ()O n E rror GoT o E rr P rodu c t I D A f t e rU pda t eD i m s t rF i l t e r A s S t ri n g在 传 给 D L ook u p函数之前给筛选字符串赋值。s t rF i l t e r=产品 I D 二&M e!产品 I D查找产品的单价并将它赋给“单价”控件。M e!销 售 价=D L ook u p(销 售 价 产 品 ,s t rF i l t e r)c h i =M e.数量E xi t _ P rodu c t I D _ A f t e rU pda t e:E xi t S u bE rrP rodu c t I D _ A f t e rU pda t e:M s g B ox E rr.D e s c ri pt i onR e s u m e E xi t _ P rodu c t I D _ A f t e rU pda t eE n d S u b(3)为“数量”设置一个更新后事件,事件过程代码如下:P ri v a t e S u b _ A f t e rU pda t e()M e!库存量=M e!库存量-M e!数量+c h iM e.R e f re s hE n d S u b(4)为“数量”设置一个进入事件,事件过程代码如下:P ri v a t e S u b 数量_ E n t e r()I f I s N u l l(M e!数 量)T h e nc h i =0E l s ec h i =M e!数量E n d I fE n d S u b(5)为“数量”设置一个获得焦点事件,事件过程代码如下:P ri v a t e S u b 数量_ Got F oc u s ()c h i =M e!数量E n d S u b要 求 7为“开票”设置一个单击事件,事件过程代码如下:P ri v a t e S u b 命令 9 6 c l i c k()M e.到货日期=M e.订购日期M e.发货日期=M e,订购日期M e.付款二 T ru eE n d S u b要求8为“输入新单”设置一个单击事件,事件过程代码如下:P ri v a t e S u b 命令 9 3 _ C l i c k()O n E rror GoT o E rr 命令 9 3 c l i c kD oC m d.GoT oR e c ord,a c N e wR e cM e.客户 I D =A A A A A I f I s N u l M M e!雇员 I D)O r M e!雇员 I D =T h e nM e.雇员 I D =s h yE n d I fs h y=M e!雇员 I DE xi t _ 命令 9 3 _ C l i c k:E xi t S u bE rr 命令 9 3 C l i c k:MsgBox Err.DescriptionResume Exit_命令 93_ClickEnd Sub要求9先假定所用到的报表都是存在的,这里先给出代码,可先不添加“打印发票”和“预览发票”按钮,待学完报表再完成此任务.(1)为“打印发票”设置一个单击事件,事件过程代码如下:S u b 打印发货单_Click()这段代码由“命令按钮向导”创建。On Error GoTo Err_PrintInvoice_ClickDim strDocName As StringstrDocName=零售发票打 印“发货单”报表,使 用“发货单筛选”查询打印当前订单的发货单。DoCmd.OpenReport strDocName,acViewNormal,零售发票筛选Exit_PrintInvoice_Click:Exit SubErr_PrintInvoice_Click:如果用户取消操作,不显示错误消息。Const conErrDoCmdCancel1ed=2501If(Err=conErrDoCmdCancel1ed)ThenResume Exit_PrintInvoice_ClickElseMsgBox Err.DescriptionResume Exit_Printlnvoice_ClickEnd IfEnd Sub(2)为“预览发票”设置一个单击事件,事件过程代码如下:Private Sub Preview_Click()On Error GoTo Err_Prev i ew_ClickDim stDocName As StringstDocName=零售发票 预 览“发票”报表,使 用“发货单筛选”查询打印当前订单的发货单。DoCmd.OpenReport stDocName,acPreview,零售发票筛选Exit Preview Click:Exit SubErr_Preview_Click:MsgBox Err.DescriptionResume Exit Preview ClickEnd Sub实现:1)创建查询2)利用向导创建窗体以“零售订单查询”、“扩展订单明细”两个查询为数据源,利用向导创建一个包含“零售订单查询”中“订 单I I)”、“订购日期”、“雇 员I D”、“付款方式”四个字段的“零售订单”主窗体及“扩展订单明细”中除“订 单I D”、“车名”之外的所有字段的“零售订单子窗体”。3)设定默认日期设定订购日期文本框数据选项卡中的“默认值”属性值为“=D a t e()”。4)添加计算控件5)设置组合框(1)销售人组合框在创建窗体时已自动建好。(2)付费方式组合框要删除原有的文本框及标签,然后添加付费方式组合框。6)在设计视图中修改窗体将零售订单窗体切换到设计视图,对窗体按图解答4-2修改。(1)对窗体及各控件的位置、大小进行调整。(2)将主窗体中所有的提示标签字体设置为蓝色、粗体。(3)将小计五个文本框的背景色设置为灰色、平面显示、不允许修改。(4)取消主