第一章题目:实验题(9)假设学院为每个研究生分配了一个长度固定的E-mail地址,地址中包括3个字符的用户名和8个字符的邮件服务器名(不包括“@”、“.”)。请按___@_____.___格式创建一个掩码,以方便输入诸如abc@magic.net形式的地址。分析:本题要求同学们了解掩码中某些符号的特定含义。用户名和服务器名由字母或数字组成,定义掩码时使用符号A(注意要大写),“@”与“.”是固定不变的,是原义字符,需要做在该字符前加上“\”符号。步骤:定义名为“电子邮件”的掩码过程如下:1.在数据表设计视图中添加新字段E-mail,文本型,长度13个字符2.将插入点停留在E-mail字段上,单击“常规”选项卡“输入掩码”行右侧按钮,见下图所示:3.在提示保存表后,弹出“掩码向导窗口”对话框,用户可单击左下角的“编辑列表”按钮,打开“自定义‘输入掩码向导’”对话框,见下图:4.单击该窗口中按钮,添加新掩码5.在随后打开对话框窗口中,输入下图所示内容,注意“输入掩码”文本框中输入的内容为AAA\@AAAAA\.AAA6.单击“关闭”按钮,在“输入掩码向导”窗口中,现实刚刚创建的新掩码“电子邮件”,见图:7.单击“下一步”按钮,在弹出的对话框中再次单击“下一步”按钮8.在出现的下图所示窗口中,选择“像这样使用掩码中的符号”9.单击完成,结束掩码的建立操作10.切换到数据表视图,进行“E-mail”字段的输入操作页首第二章题目:实验题(4)计算研究生中最早和最晚入学的学生相差几年分析:这是一个嵌套查询,首先分别找出研究生中最早的入学日期和最晚的入学日期,然后将两个查询结果值相减,最后使用SELECT命令将这个差值作为计算字段的值输出,输出时所用到的数据源任意,为避免重复显示,可以使用DISTINCT命令消除相同记录;计算字段是个表达式,需要用AS子句为该字段增加一个字段名。结果:SELECTDISTINCT(SELECTYEAR(MAX(入学日期))FROM研究生)-(SELECTYEAR(MIN(入学日期))FROM研究生)AS相差年数FROM研究生题目:实验题(7)生成一个查询,要求能显示每个系及其该系所培养的研究生的名字。分析:在涉及多表查询时,必须首先在关系视图中建立各表间的关系。本题的关系视图入下图所示:本题可以在查询设计视图中完成。系与研究生之间没有直接关系,必须以“导师”表为桥梁产生间接联系,因此本题表面上与导师表无关,但查询设计视图中必须出现导师表。结果:查询设计视图如下图所示:讨论:如果查询设计视图上不出现导师表,则查询结果将达54行,为什么?页首第三章题目:实验题(11)输出导师马腾跃所带研究生中入学日期最早者姓名。分析:这是一个嵌套查询,步骤是首先找出马腾跃所带研究生的最早日期,再进一步查找马腾跃所带的研究生中谁的入学日期恰好与它相同,此时可输出这个(这些)研究生的名字。结果:SELECT研究生.姓名FROM导师INNERJOIN研究生ON导师.导师编号=研究生.导师编号WHERE入学日期=(SELECTMIN(入学日期)FROM导师INNERJOIN研究生ON导师.导师编号=研究生.导师编号WHERE导师.姓名='马腾跃')AND导师.姓名='马腾跃'讨论:本题最易犯的错误是省略最后部分的AND导师.姓名='马腾跃',此时执行查询,显示的结果也许还是对的,但从逻辑上说是错误的,为什么?题目:实验题(12)输出图示的交叉表,内容为各个导师(姓名)所带的不同研究方向男女研究生的最高分。分析:交叉表只能用“交叉表查询向导”完成。交叉表向导的数据源只能是一个,而现在要求的内容涉及到两个表(导师表和研究生表)。要解决这个问题,只能通过查询进行,将交叉表中相关字段在查询涉及视图中组成一个简单的查询,再以该查询作为交叉表的数据源,从而将多重数据源转换成单一数据源。查询设计视图如下:页首第五章题目:实验题(6)找出所有姓李的导师的姓名及其所带研究生的姓名,在立即窗口中输出。102李向明男51冯山谷男101103马大可女58杨柳男102104李小严女63周旋敏女104马力女马德里男101潘浩女104结果:SubData_Plus()DimAAsInteger,BAsIntegerDimCAsInteger,DAsInteger'4个原始数据A=23:B=12:C=31:D=19CallLine1(20)'调用过程绘制第一条横线(20个-)Debug.PrintA;Tab(6);B;Tab(12);A+BDebug.PrintC;Tab(6);D;Tab(12);C+DCallLine1(30)'调用过程绘制第二条横线(30个-)Debug.PrintA+C;Tab(6);B+D;Tab(12);A+B+C+DCallLine1(18)'调用过程绘制第三条横线(12个-)EndSubSubLine1(NAsInteger)'绘制N个-组成的横线DimIAsIntegerIfN15OrN25ThenN=15ForI=1ToNDebug.Print-;NextIDebug.Print'取消最后的;作用EndSub页首第六章题目:实验题(9)编写一个程序,上有一个文本框和一个按钮“四季”;单击一次按钮,文本框中显示一个季节名称,依次是红色的“春”、黄色的“夏”、蓝色的“秋”和绿色的“冬”,文字大小为72磅,字体依次为宋、仿宋、楷、黑,再次单击重复显示“春”。窗体保存为“实验8”,见下图:步骤:1.选择“在设计视图中创建窗体”命令,在新窗体上添加一个文本框和一个按钮;2.将按钮的标题修改为“四季”;3.打开VBA代码窗口,在“对象”下拉列表框中选择按钮,本例为Command2,在“过程”下拉列表框中选择Click(单击事件);4.在PrivateSubCommand2_Click()和EndSub之间输入下面的代码:IfIsNull(Text0.Value)=TrueThenText0.ForeColor=vbRedText0.FontName=宋体Text0.Value=春ElseIfText0.Value=春ThenText0.ForeColor=vbYellowText0.FontName=仿宋_GB2312Text0.Value=夏ElseIfText0.Value=夏ThenText0.ForeColor=vbBlueText0.FontName=楷体_GB2312Text0.Value=秋ElseIfText0.Value=秋ThenText0.ForeColor=vbGreenText0.FontName=黑体Text0.Value=冬ElseIfText0.Value=冬ThenText0.ForeColor=vbRedText0.FontName=宋体Text0.Value=春EndIf5.在“对象”下拉列表框中选择窗体Form,在“过程”下拉列表框中选择Load(加载事件);6.在PrivateSubForm_Load()和EndSub之间输入下列代码:Text0.FontSize=100'设置文本框中文字大小Command2.SetFocusCommand2.Default=True'任何时候按下回车键相当于鼠标单击该按钮7.关闭代码窗口,切换到“窗体视图”,然后回到窗体设计视图中调整文本框的大小和窗体的大小;8.保存窗体。页首第七章题目:实验题(10)编写下图所示简易计算器,要求:(1)参与计算的数据是1000及以内的实数,否则自动为0;(2)计算精度均只保留小数两位;(3)窗体启动和单击“清除”按钮后,4种运算符的单选按钮全部为灰色,文本框为0;(4)除法运算时,如果除数为0则计算结果显示“ERROR”。步骤:1.新建一个窗体,在上面添加所需控件见下图所示,注意应该先添加选项组控件,再增加选项按钮,见下图;2.利用窗口设计视图中的“格式”菜单命令“大小”和“对齐”,调整窗体上各个控件的大小与对齐方式3.在VBA代码窗口中建立相应的事件过程,输入下列代码:PrivateSubCommand20_Click()IfIsNull(Frame8.Value)=TrueThenMsgBox请选择运算符!EndIfIfFrame8.Value=1ThenText6.Value=Val(Text2.Value)+Val(Text4.Value)EndIfIfFrame8.Value=2ThenText6.Value=Val(Text2.Value)-Val(Text4.Value)EndIfIfFrame8.Value=3ThenText6.Value=Val(Text2.Value)*Val(Text4.Value)EndIfIfFrame8.Value=4AndVal(Text4.Value)=0ThenMsgBox除数不能为零!EndIfIfFrame8.Value=4AndVal(Text4.Value)0ThenText6.Value=Val(Text2.Value)/Val(Text4.Value)Text6.Value=Format(Text6.Value,0.0000)EndIfEndSubPrivateSubCommand21_Click()CallForm_LoadEndSubPrivateSubCommand22_Click()DoCmd.CloseEndSubPrivateSubForm_Load()Text2.Value=Text4.Value=Text6.Value=Text2.SetFocusCommand20.Default=TrueCommand21.Cancel=TrueFrame8.Value=NullEndSub页首第七章题目:实验题(3①~⑦)全部代码。表7.4《数据库原理》成绩单学号姓名成绩等级200401刘伟96200402秦建中87200403张峻67200404高萍92200405林亦明83200406宋海涛71……………………代码:DimCNAsADODB.ConnectionDimRSAsADODB.RecordsetPrivateSubForm_Load()OnErrorGoToloop1文本8.Locked=True'该文本框表示等级,不能直接输入成绩值DoCmd.OpenTable数据库原理'成绩单表存在DoCmd.CloseacTable,数据库原理,acSaveNo命令26.Enabled=False'表存在,无需创建表SetCN=CurrentProject.ConnectionSetRS=NewADODB.RecordsetRS.LockType=adLockOptimisticRS.Open数据库原理,CN,,,adCmdTableIfRS.EOF=TrueAndRS.BOF=TrueThen'表中没有记录命令15.Enabled=False命令16.Enabled=False文本12.Enabled=FalseExitSubEndIf文本2.Value=RS!学号文本4.Value=RS!姓名文本6.Value=RS!成绩文本8.Value=RS!等级ExitSubloop1:IfErr.Number=7874Then文本2.Value=Null文本4.Value=Null文本6.Value=Null文本8.Value=NullMsgBox成绩单不存在命令14.Enabled=False命令15.Enabled=False命令16.Enabled=False命令18.Enabled=False命令24.Enabled=FalseEndIfEndSubPrivateSub命令14_Click()'新纪录按钮'建立新记录文本2.Value=Null文本4.Value=Null文本6.Value=Null文本8.Value=NullRS.AddNewEndSubPrivateSub命令15_Click()'前一记录按钮RS.MovePr