整理过的Access2010《数据库基础及应用》综合练习题(共22页).doc
精选优质文档-倾情为你奉上第1 题: (单选题, 1 分) 在 Access2010 中的 VBA 过程里,要运行宏可以使用 DoCmd 对象的 _方法。 AOpen BRunMacro CClose DQuery答案: B 第2 题: (单选题, 1 分) 在宏中,OpenReport 操作可用来打开指定的_。 A查询 B状态栏 C 窗体 D报表答案: D 第3 题: (单选题, 1 分) 关于宏的执行,以下说法不正确的是_。 A在“导航窗格”,选择“宏”对象列表中的某个宏名并双击,可以直接运行该宏中的第一个子宏的所有宏操作 B在“导航窗格”,选择“宏”对象列表中的某个宏名并双击,可以直接运行该宏中的第二个子宏的所有宏操作 C可以在一个宏中运行另一个宏 D在一个宏中可以含有IF逻辑块答案: B 第4 题: (单选题, 1 分)在宏中,用于显示所有记录的宏命令是_。 AMsgboxAllRecords BShowAllRecords CSetProperty DSaveRecords答案: B 第5 题: (单选题, 1 分) 在 VBA 中,表达式 (52 Mod 8) >= 4 的值是_。 ATrue BFalse CAnd D. Or答案: B 第6 题: (单选题, 1 分) 表达式 IIf(23 5.5 <= 3 Or 5 >= 6, 68, 176) 的结果是_。 A5 B6 C68 D176注意:执行整除之前,要先把除数四舍五入。 请另外试试表达式 IIf(23 5.4 <= 3 Or 5 >= 6, 68, 176) 的结果。答案: C 第7 题: (单选题, 1 分)执行下列程序段后,变量 P 的值是_。 Dim W As Single Dim P As Single W = 68.5 If W <= 50 Then P = W * 4 Else P = W * 2 End If A. 68.5 B. 137 C. 205.5 D. 275答案: B 第8 题: (单选题, 1 分)设 x=9,执行下列程序段后,变量 t 的值是_。 y = x4 +24 If y<>30 Then x = x + y t = x Mod 12 A. 1 B. 2 C. 3 D. 4答案: C 第9 题: (单选题, 1 分) 在 VBA 中,声明函数过程的关键字是_。 ADim BConst CFunction DSub答案: C 第10 题: (单选题, 1 分) 对 VBA 中的逻辑值进行算术运算时,True 值被当做 -1,False 当做_。 A1 B2 C0 D3答案: C 第11 题: (单选题, 1 分) 在 VBA 中,类型说明符 # 表示的数据类型是_。 A整型 B长整型 C单精度型 D双精度答案: D 第12 题: (单选题, 1 分)下列语句中,定义窗体的加载事件过程的头语句是_。 APrivate Sub Form_Chang() BPrivate Sub Form_LostFocus() CPrivate Sub Form_Load() DPrivate Sub Form_Open()答案: C 第13 题: (单选题, 1 分) 现有一个已经建好的窗体,窗体中有一个命令按钮,单击此按钮,将打开“产品数量统计”报表,如果采用VBA 代码完成,下面语句正确的是_。 ADocmd.OpenForm "产品数量统计" BDocmd.OpenView "产品数量统计" CDocmd.OpenTable "产品数量统计" DDocmd.OpenReport "产品数量统计"答案: D 第14 题: (单选题, 1 分) 表达式 IIf(7 Mod 5 > 3, 60, IIf(23 > 28, 80, 100) 的运算结果是_。 A60 B80 C100 D160答案: C 第15 题: (单选题, 1 分) 在 VBA 中,变量声明语句“ Dim a!, b AS integer”中的变量 a 的类型是_。 A整型 B单精度型 C长整型 D变体型答案: B 第16 题: (单选题, 1 分) 在 VBA 中,“ Dim a(3,3) AS Boolean”语句定义了一个数组,该数组中的全部元素都初始化为_。 ATrue BFalse C-1 D1答案: B 第17 题: (单选题, 1 分) 在 VBA 某个模块中,有如下声明语句 Dim a(6,10) AS integer那么数组 a(6,10) 总共有_个元素。 A16 B60 C70 D77答案: D 第18 题: (单选题, 1 分) 以下 VBA 程序段运行后,变量 j 的值是_。 k = 10 j = 0 Do k = k + 10 j = j + 1 Loop Until k > 20 A1 B2 C4 D10答案: B 第19 题: (单选题, 1 分) 以下 VBA 程序段运行后,变量 j 的值是_。 y = 89 j = "不及格" Do While y > 60 j = IIf(y < 70, "及格", IIf(y < 90, "良好", "优秀") y = y - 50 Loop A"不及格" B"及格" C"良好" D"优秀"答案: C 第20 题: (单选题, 1 分) 以下 VBA 代码程序运行结束后,变量 a 的值是_。 a=0 b=101 Do b=b-20 a=a+b Loop While b>80 A60 B140 C142 D160 答案: C 第21 题: (单选题, 1 分)以下 VBA 代码程序运行结束后,数组元素 a(12) 的值是_。 Dim a(12) As Long, i As Long i=0 Do Until i>12 a(i)=i2 - i i=i+1 Loop A1 B128 C132 D144答案: C 第22 题: (单选题, 1 分)假定有如下的 Function 过程: Function ppfun(x As Single, y As Single) ppfun=x3-y2 End Function在窗体上添加一个命令按钮(名为 cmd10),然后编写如下事件过程: Private Sub cmd10_Click() Dim a As Single, b As Single a = 5 b = 4 MsgBox ppfun(a,b) mod 50 End Sub打开窗体运行后,单击命令按钮,消息框中的输出内容是_。 A50 B25 C9 D109答案: C 第23 题: (单选题, 1 分)在窗体上添加一个命令按钮(名为 cmd2),然后编写如下事件过程: Private Sub cmd2_Click() Dim pi As Single, n As Integer pi = 3.14 n = Len(Str(pi) & Space(2) & "是本字符串长度") MsgBox n End Sub打开窗体运行后,单击命令按钮,消息框中的输出内容是_。 A11 B12 C13 D14答案: D 第24 题: (单选题, 1 分)在窗体上添加一个命令按钮(名为 cmd13),然后编写如下事件过程: Private Sub cmd13_Click() Dim x As String, y As String x = "龙洞华美路中山大学新华学院法学院" y = "2006级法学专业学生" MsgBox Mid(x,6,4) & Right(x,3) & Left(y,9) End Sub打开窗体运行后,单击命令按钮,消息框中的输出内容是_。 A龙洞华美路中山大学新华学院法学院2006级法学专业学生 B中山大学新华学院法学院2006级法学专业学生 C中山大学法学院2006级法学专业学生 D中山大学法学院2006级法学专业答案: D 第25 题: (单选题, 1 分) 下列程序段,建立如图所示的数组d(下标从1开始),填写所缺部分: 1 2 3 4 5 6 2 1 2 3 4 5 3 2 1 2 3 4 4 3 2 1 2 3 5 4 3 2 1 2 6 5 4 3 2 1 Dim d(1 To 6, 1 To 6) For j = 1 To 6 For k = 1 To 6 d(j,k) = Abs( _ ) + 1 '选答案 Next k Next j Aj Bj-k+1 Cj-k D2*j-k答案: C 第26 题: (多选题, 1 分)下面_是合法的变量名。 ASTR-NAME BCase CFOR_99 Dabc2006 E6A答案: CD 第27 题: (多选题, 1 分) 在 VBA 中,对于 Sub (或 Function) 过程中的每一个形参,可用于声明其参数传递方式的关键字包括_。 AByMeB BByVal CByRef DByVBA EBySub答案: BC 第28 题: (单选题, 1 分) 在窗体上添加一个命令按钮(名为 cmd),然后编写如下事件过程。单击该命令按钮,便将数组 p(6,8)中各个元素都赋予其对应的两个下标值平方之和,请完善程序。 Private Sub cmd_Click() Dim p(6,8) As integer, i As integer, j As integer For i=0 To 6 For j=0 To 8 p(i,j) = _ '选答案 Next j Next i End Sub A. (i+j)2 B. i2+j C. i+j2 D. i2+j2答案: D 第29 题: (单选题, 1 分) 在窗体上已经建立1个文本框控件txt1和1个命令按钮控件cmd1。请完善程序,使之完成以下操作: 程序运行时,文本框上显示“VBA程序设计”,命令按钮的标题上显示“隐藏”; 单击命令按钮时文本框消失; 单击窗体时显示出文本框。 Private Sub cmd1_Clic() txt1.Visible = False End Sub Private Sub Form_Click() txt1._ = True '选答案 End Sub Private Sub Form_Load() txt1.Value = "VBA程序设计" txt1.Visible = True cmd1.Caption = "隐藏" End Sub A. Enable B. Value C. Visible D. Caption答案: C 第30 题: (单选题, 1 分) 在窗体上已经建立1个标签控件lab1和1个命令按钮控件cmd1。请完善程序,使之完成以下操作: 打开窗体后单击命令按钮,则通过输入对话框分别输入3个数值,然后求出其中最大的数,并将最大的数显示在标签lab1中。 Private Sub cmd1_Click() Dim a As Single, b As Single, c As Single Dim k As Single a = Val(InputBox("输入第一个数") b = Val(InputBox("输入第二个数") c = Val(InputBox("输入第三个数") If a<b Then k = b Else k = a End If If k<c Then k = c End If _ '选答案 End Sub A. lab1.Value = a B. lab1.Value = b C. lab1.Caption = c D. lab1.Caption = k答案: D 第31 题: (填空题, 2 分) 7 2 Mod 11 + 7 4 * 9 / 5 Mod 6 上述表达式的值是_。<空1>_ 答案:Lower(Trim(GetFill(1)="6"第32 题: (填空题, 2 分) 通过编程求出结果。 把 9786 表示为两个加数之和,使其中一个加数能被91整除,而另一个加数能被87整除。请求出:在这两个加数中,能被91整除的加数等于多少?<空1>_ 答案:Lower(Trim(GetFill(1)="4914"第33 题: (填空题, 2 分) 通过编程求出结果。 求 S = 1/5 + 1/10 + 1/15 + 1/20 + 1/25 + + 1/(5*n) + 的前 n 项之和,当 S 第一次大于或等于 1.4 时终止计算,此时项数 n 为_。<空1>_ 答案:Lower(Trim(GetFill(1)="616"第10章 VBA程序模块设计 1VBA的英文全名 Visual Basic for Application 2、VBA编程基础 (1)标准数据类型(P221) Ø数据类型定义时的字符串、类型说明符 变体数据类型 ØVBA数据类型中不包括字段类型中的OLE对象型和备注型 (2)常量及其类型 ·Ø类型直接常量(数值常量、字符常量、日期/时问常量)、符号常量(需要用Const来定义)、系统常量(7个系统常量)、内部常量 ·Ø字符常量与日期/时间常量的定界符 (3)变量 ·Ø变量的命名规则,变量的定义(声明)语句(类型说明符的应用) ·Ø变量的类型及其作用域: 公共变量、私有(模块)变量、局部变量 ·Ø数据库对象变量在VBA代码中的引用格式,使用Set建立控件对象的变量 (4)数组 ·Ø数组的构成与定义语句(多维数组的定义) ·Ø数组下标及数组元素个数的确定 (5)运算符与表达式 ·Ø四类运算符:算术运算符(标准除法、整除、Mod)、连接运算符(&和+)、比较/关系运算符、逻辑运算符 ·Ø运算符的优先级别 (6)需熟练掌握如下标准函数: ·Ø算术(数学)函数:Int()、Fix()、Rnd() ·Ø字符串函数:Instr()、Len()、Left()、Right()、Mid() ·Ø日期/时间函数:Date()、Now()、Year()、Month()、Day()、WeekDay()、 ·Ø类型转换函数:Asc()、Chr()、Str()、Val() ·Ø其它函数:MsgBox()、IIf()3、程序控制的三种基本结构 顺序结构 分支/选择/条件结构(多种结构形式) 循环结构 要求:掌握各种语句的语法结构及其功能;能读懂和说出程序的运行流程及运行结果;会编写简单的程序。 4、数据的输入输出 InputBox()函数、MsgBox()函数 (换行输出 Chr(13)用法)、 Debug.Print语句 (“立即”窗口中输出)5、过程调用 6、参数传递(阅读程序)参数的两种传递方式 ·Ø按值传递:传值、数据“单向”传递;在形参定义时的相应子句为:ByVal ·Ø按地址传递:传址、数据“双向”传递;在形参定义时的相应子句为:ByRef ·Ø当实参为常量或表达式时,实际为“传值”,此时不受形参的传址(ByRef)说明的影响 ·Ø系统默认的参数传递方式是:地址传递 7、VBA的数据库编程 (1)数据库引擎及其接口 使用DAO、ADO进行数据库编程的要点 数据库数据访问和处理时使用的属性、方法和特殊函数 Ø属性:BOF、EOF 方法:Edit(DAO)、Update、Close、Move系列方法 (2)DOCmd对象及其常用的方法 Ø打开窗体、报表、查询和表等的操作方法(命令及其格式、参数) 关闭对象操作(用Close方法)与退出Access的操作(用Quit方法)7、VBA的数据库编程 (1)数据库引擎及其接口 使用DAO、ADO进行数据库编程的要点 数据库数据访问和处理时使用的属性、方法和特殊函数 Ø属性:BOF、EOF Ø方法:Edit(DAO)、Update、Close、Move系列方法 (2)DOCmd对象及其常用的方法 打开窗体、报表、查询和表等的操作方法(命令及其格式、参数) 关闭对象操作(用Close方法)与退出Access的操作(用Quit方法)4、VBA程序设计 (1)编程题中第2小题为结构化编程 要求:用VBA语句编程,并按要求输出结果(在“立即窗口”显示结果或使用MsgBox函数) (2)编程题中第3小题为VBA的数据库编程 使用DAO或ADO访问数据库/表,对表中记录或字段值操作 【例】下列表达式计算结果为日期类型的是A A)#2012-1-23#-#2011-2-3# B)year(#2011-2-3#)C)DateValue("2011-2-3")D)Len("2011-2-3") 【例】 下列表达式中,能正确表示条件"x和y都是奇数"的是C A)x Mod 2=0 And y Mod 2=0 B)x Mod 2=0 Or y Mod 2=0 C)x Mod 2=1 And y Mod 2=1 D)x Mod 2=1 Or y Mod 2=1 【例】 在VBA中,能自动检查出来的错误是A A)语法错误 B)逻辑错误 C)运行错误 D)注释错误【例】 下列给出的选项中,非法的变量名是C A)Sum B)Integer_2 C)Rem D)Form1 【例】 如果在被调用的过程中改变了形参变量的值,但又不影响实参变量本身,这种参数传递方式称为A A)按值传递 B)按地址传递 C)ByRef传递 D)按形参传递 【例】 表达式"B=INT(A+0.5)"的功能是B A)将变量A保留小数点后1位 B)将变量A四舍五入取整 C)将变量A保留小数点后5位 D)舍去变量A的小数部分【例】VBA语句"Dim NewArray(10) as Integer"的含义是B A)定义10个整型数构成的数组NewArray B)定义11个整型数构成的数组NewArray C)定义1个值为整型数的变量NewArray(10) D)定义1个值为10的变量NewArray 【例】 运行下列程序段,结果是B For m=10 to 1 step 0 k=k+3 Next m A)形成死循环 B)循环体不执行即结束循环 C)出现语法错误 D)循环体执行一次后结束循环 【例】 下列表达式计算结果为数值类型的是A A)#5/5/2010#-#5/1/2010# B)"102">"11" C)102984 D)#5/1/2010#5 【例】 要将一个数字字符串转换成对应的数值,应使用的函数是A A)Val B)Single C)Asc D)Space 【例】下列变量名中,合法的是C A)4A B)A1 C)ABC_1 D)private 【例】 若变量i的初值为8,则下列循环语句中循环体的执行次数为C Do While i<17 ii2 Loop A)3次 B)4次 C)5次 D)6次 【例】 InputBox函数的返回值类型是B A)数值 B)字符串 C)变体 D)视输入的数据而定 【例】下列能够交换变量X和Y值的程序段是C A)YX:XY B)ZX:YZ:XY C)ZX:XY:YZ D)ZX:WY:YZ:XY【例】 在VBA中要将数值表达式的值转换为字符串,应使用函数 str() 。 【例】 在VBA中要判断一个字段的值是否为Null,应该使用的函数是 ISNULL 。 【例】函数表达式题目: 1. int(-2.8)+fix(2.8) 2. 103+-8 mod 3 3. year(#2011/12/12#)-month(#2011/10/10#)+day(#2012/1/1#) 4. left(南京财经大学,2)+mid(南京财经大学,3,2)+right(南京财经大学,2) 5. instr(3,“ab12abc34abc”,a,1) 6. 已知2011年12月31日是星期六,weekday(#2011/12/31#) 7. val(-12e2abcd)+len(南京财经大学) 8. chr(asc(A)+5)【例】1. 运行下列程序,结果是( ) f=13 Private Sub Command32_Click() f0=1:fl=1:k=1 Do While k<=5 f=f0+f1 f0=f1 f1=f k=k+1 Loop MsgBox "f=" & f End Sub 【例】2. 有如下事件程序,运行该程序后输出结果是( ) x=1, y=0 Private Sub Command33_Click() Dim x As Integer,y As Integer x=1:y=0 Do Until y<=25 y=y + x * x x=x + 1 Loop MsgBox "x=" & x & ", y=" & y End Sub【例】3. 下列程序的功能是计算Sum=1+(1+3)+(1+3+5)+(1+3+5+39) Private Sub Command34_Click() t=0 m=1 sum=0 Do t=t+m sum=sum+t m= m+2 Loop While m<=39 MsgBox "Sum="& sum End Sub 【例】4. 运行下列程序,输入如下两行: Hi, I am here 弹出的窗体中的显示结果是 Hi, Private Sub Command11_Click() Dim abc As String,sum As String sum="" Do abc=InputBox("输入abc") If Right(abc,1)="." Then Exit Do sum=sum+abc Loop MsgBox sum End Sub 【例】5. 运行下列程序,窗体中的显示结果是:x= 21 。 Option Compare Database Dim x As Integer Private Sub Form_Load() x=3 End Sub Private Sub Command11_Click() Static a As Integer Dim b As Integer b=x2 fun1 x,b fun1 x,b MsgBox "x=" & x End Sub Sub fun1(ByRef y As Integer,ByVal z As Integer) y = y+z z = y-z End Sub【例】6. 数据库中有"学生成绩表",包括"姓名"、"平时成绩"、"考试成绩"和"期末总评"等字段,现要根据"平时成绩"和"考试成绩"对学生进行"期末总评"。规定:"平时成绩"加"考试成绩"大于等于85分,则期末总评为"优","平时成绩"加"考试成绩"小于60分,则期末总评为"不及格",其他情况期末总评为"合格"。 下面的程序按照上述要求计算每名学生的期末总评。请在空白处填入适当的语句,使程序可以完成指定的功能。 Private Sub Command0_Click() Dim db As DAO.Database Dim rs As DAO.Recordset Dim pscj,kscj,qmzp As DAO.Field Dim count As Integer Set db=CurrentDb() Set rs=db.OpenRecordset("学生成绩表") Set pscj=rs.Fields("平时成绩") Set kscj=rs.Fields("考试成绩") Set qmzp=rs.Fields("期末总评") count=0 Do While Not rs.EOF rs.edit If pscj+kscj>=85 Then qmzp="优" ElseIf pscj+kscj<60 Then qmzp="不及格" Else qmzp="合格" End If rs.Update count=count+1 rs.movenext Loop rsClosedb.Close Set rs=Nothing Set db=Nothing MsgBox "学生人数:" & count End Sub【例】7. 窗体中有命令按钮Command1,事件过程如下: Public Function f(x AS Integer)As Integer Dim y As Integer x20 y2 fx*y End Function Private Sub Commandl_Click() Dim y As Integer Static x As Integer x10 y5 yf(x) Debug.Print x;y End Sub 运行程序,单击命令按钮,则立即窗口中显示的内容是( ) 20 40 【例】8. 窗体中有命令按钮Command1和文本框Text1,事件过程如下: Function result(ByVal x As Integer)As Boolean If x Mod 20 Then resultTrue Else resultFalse End If End Function Private Sub Commandl_Click() xVal(InputBox("请输入一个整数") If result(x) Then Text1Str(x) & "是偶数." Else Text1Str(x) & "是奇数." End If End Sub【例】9.窗体有命令按钮Command1和文本框Text1,对应的事件代码如下: Private Sub Command1_Click() For i1 To 4 x3 For j1 To 3 For k1 To 2 xx3 Next k Next j Next i Textl.ValueStr(x) End Sub 运行以上事件过程,文本框中的输出是( ) 21例】10. 窗体中有命令按钮run34,对应的事件代码如下: Private Sub run34_Enter() Dim num As Integer,a As Integer,b As Integer,i As Integer For i1 To 10 numInputBox("请输入数据:","输入") If Int(num/ 2)num/ 2 Then aa1 Else bb1 End If Next i MsgBox ("运行结果:a" & Str(a) & ",b" & Str(b) End Sub 运行以上事件过程,所完成的功能是( )对输入的10个数据分别统计奇数和偶数的个数【例】11. 运行下列程序,输入数据8、9、3、0后,窗体中显示结果是( ) 20 Private Sub Form_click() Dim sum As Integer,m As Integer sum0 Do mInputBox("输入m") sumsumm Loop Until m0 MsgBox sum End Sub【例】12. 下列程序的功能是求方程:x2y21000的所有整数解。请在空白处填入适当的语句,使程序完成指定的功能。 Private Sub Commandl_Click() Dim x as integer,y as integer For x 34 To 34 For y34 To 34 If x*x+y*y=1000 Then Debug.Print x,Y End If Next y Next x End Sub【例】13. 下列程序的功能是求算式:11/2!1/3! 1/4! 前10项的和(其中n!的含义是n的阶乘)。请在空白处填入适当的语句,使程序完成指定的功能。 Private Sub Commandl_C1ick() Dim i as integer,s as single,a as single a1:s0 For i1 To 10 a a/i ssa Next i Debug.Print "11/ 2! l/ 3!";s End Sub【例】14. 在窗体中有一个名为Command12的命令按钮,Click事件功能是:接收从键盘输入的10个大于0的不同整数,找出其中的最大值和对应的输入位置。请在空白处填入适当语句,使程序可以完成指定的功能。 Private Sub Commandl2_Click() max0 maxn0 For i1 To 10 numVal(InputBox("请输入第" & i & "个大于0的整数:") If max<num Then maxnum maxn i End If Next i MsgBox("最大值为第" & maxn & "个输入的" & max) End Sub【例】15. 数据库的"职工基本情况表"有"姓名"和"职称"等字段,要分别统计教授、副教授和其他人员的数量。请在空白处填入适当语句,使程序可以完成指定的功能。 Private Sub Command5_Click() Dim db As DAO.Database Dim rs As DAO.Recordset Dim zc As DAO.Field Dim Countl As Integer,Count2 As Integer,Count3 As Integer Set dbCurrentDb() Set rsdb.OpenRecordset("职工基本情况表") Set zcrs.Fields("职称") Countl0:Count2