基于VBA和Access数据库的交互性习题的制作*
2014-08-08仝海燕吕洪善秦春影
仝海燕, 吕洪善, 秦春影
(1.亳州师范高等专科学校 理化系,安徽 亳州,236800;2.亳州职业技术学院 电子与电气工程系,安徽 亳州,236800)
社会信息化的发展使得很多高校引进了大量的先进多媒体教学设施,对于教师而言,要充分的利用这些设施,则要制作和使用符合学生认知的课件,才能较好的提高相应的教学质量。目前,制作课件的工具有Authorware、Flash、PowerPoint等软件,PowerPoint具有使用简单,易学易用,兼容性好等优点,使其在实际应用中,深受广大课件制作者的欢迎。据统计,近90%的老师在课堂教学中不同程度地使用了PowerPoint课件进行教学,特别是年轻教师使用的频率更高[1]。
有人认为PowerPoint软件在制作具有交互性的习题课件时效果没有其他软件好。很多人为方便起见,在制作习题时,干脆忽视习题的交互性,直接把习题和相应答题选项输入在幻灯片上。也有人为了加上一些交互效果,而采用自定义动画和触发器来实现交互效果。自定义动画和触发器在一定程度上实现了交互,但在自主学习时,学生则不能按照其认知规律进行做题,交互性不强。其实,在PowerPoint课件中,可以利用VBA工具来实现交互性好的习题课件。以单项选择题为例,介绍利用VBA工具和Access数据库的相关技术,实现习题课件中习题数量多的情况下,具有交互性更好、更符合学生自主选择和认知规律的习题课件制作方法。
1 VBA简介及在Powerpoint2010环境下VBA编程环境的进入
1.1 VBA简介
VBA是Visual Basic for Application的缩写,是微软公司开发的一种应用程序共享的自动化编程语言,用于office系列软件功能的二次开发和扩展,被内置在office系列软件中。用户利用VBA技术可以极大的增加Office系列软件的交互性。它与VB的开发环境和基本功能相似,不同之处是VB程序可以独立运行,而VBA必须依赖与相应的应用程序[2]。
1.2 Powerpoint2010环境的VBA编程
首先,启动Powerpoint2010,建立一张幻灯片,为了编辑的直观性,可以将幻灯片的版式设置为空白版式。其次,在Powerpoint2010的环境中将“开发工具”选项卡调出来,因为VBA的相关按钮在“开发工具”选项卡的相应功能区中,而默认情况下,“开发工具”选项卡是不显示的。
将“开发工具”选项卡调出的方法:单击Powerpoint2010窗口左上角的“文件”菜单,在相应的下拉菜单中选择“选项”命令,在出现的PowerPoint选项对话框的左侧列表中选择“自定义功能区”,在右侧“主选项卡”中将“开发工具”前面的复选框选中,然后单击“确定”,这样在PowerPoint的选项卡中就会出现“开发工具”选项卡。最后,单击“开发工具”选项卡,利用该选项卡中相应功能区的相关按钮即可进入VBA的编辑环境。
2 基于VBA和Access数据库的多题量习题的制作
要利用VBA和Access数据库制作多题量的交互性较好的习题,需涉及VBA和Access数据库进行连接的相关内容,下面简单介绍VBA与Access数据库连接时用到的对象。
2.1 VBA与Access数据库的连接
VBA与数据库的连接一般采用ADO方式,ADO就是ActiveX数据对象。是目前通用的数据库访问技术[3]。
在VBA连接数据库时要用到ADO的Connection、Recordset对象。
(1) Connection对象:建立应用程序与数据源的连接。只有连接成功后,Recordset对象才能访问某个数据库[3]。
(2) Recordset对象:执行数据访问或SQL命令得到动态记录集,它被缓存在内存中[3]。
2.2 设计方法
在制作过程中,可以将VBA技术和Access数据库技术相结合,来制作题量大、交互性好且易于管理的习题。现以单项选择题为例,来说明利用VBA和数据库技术实现大题量的设计方法。
在幻灯片中单击“单项选择题练习”按钮,进入图1所示的做题欢迎界面。根据相应的提示,单击欢迎界面下方的“开始练习”按钮,即可进入做题界面,进行习题练习(图2)。
图1 习题初始界面
图2 单选题做题界面
开始做选择题时,因为是习题的第1题,因此“上一题”按钮不可用,单击“下一题”按钮可进入下一题的题目,当到达最后一题时,“下一题”按钮不可用,做中间的题目时,两个按钮均可操作。在练习的过程中可以随时通过单击“结束按钮”和“查看答案”按钮进行结束练习或查看相应题目的参考答案。
通过实例的效果图可以看出,利用这种方法设计的习题,交互性比较好,而且习题管理也非常容易,在练习时学生可以自主的进行相应的选择,更加符合学生的认知心理。下面介绍具体的实现方法。
(1) 利用Access软件制作习题库。将练习的题目信息利用Access软件制作成题库文件。在例中题库文件的文件名为xtk.mdb,保存在D盘的根目录中。数据库中设计一张数据表xt用来存储习题的具体信息,其结构设计如图3所示。习题库中包含timu、dA、dB、dC、dD和answer 6个字段,分别表示题目的描述、4个答案选项和参考答案。
图3 习题库信息
图4 欢迎界面中文字标签(左)和命令按钮属性(右)
(2) 在VBA编程环境中制作习题的布局界面。
① 制作欢迎界面。在幻灯片编辑环境中,选择“开发工具”选项卡中的“代码”功能区中的“Visual Basic”按钮,进入VBA的编程环境。在编程环境中,选择“插入”菜单中的“用户窗体”命令,则在VBA的编辑环境中插入一个窗体UserForm1。选中窗体UserForm1,选择常用工具栏中的“属性窗口”按钮,打开窗体UserForm1的属性窗口,将该窗体的“名称”属性设置为XY,“caption”属性设置为空,其他默认。
选择常用工具栏中的“工具箱”按钮,在窗体XY中制作一个文字标签控件和一个按钮控件,分别设置这两个控件的属性,具体设置如图4所示。
② 制作习题界面。利用①中介绍的方法,制作习题窗体,将该窗体的“名称属性”设置为UserFormXZT,“Caption”属性设置为“单项选择题”。
在窗口UserFormXZT中插入1个标签控件(其“名称”属性设置为LabelTM,“Caption”属性为空)用来显示题目描述,4个单选按钮控件和相应的4个文字标签控件(单选按钮控件“Caption”属性设置为空,其他默认,文字标签控件属性的名称分别设置为LabelDaA、LabelDaB、LabelDaC 、LabelDaD,“Caption”属性均为空)用来显示答题信息,4个命令按钮用来制作“查看答案”、“上一题”、“下一题”和“结束”按钮,“查看答案”按钮右侧插入1个文字标签控件,用来显示具体的答案。
“查看答案”、“上一题”、“下一题”、“结束”按钮和标签控件的“名称”属性分别设置为ButtonCKDA、ButtonSYT、ButtonXYT、ButtonJS和LabelCKDA, “Caption”属性分别设置为“查看答案”、“上一题”、“下一题”、“结束”和“空”。
将相应的控件按照效果图进行排列,布局好其相应位置。
③ 利用VBA实现各控件相应的功能。要实现VBA 与Access 题库的连接,在打开Visual Basic 编辑器上,执行“工具”菜单项下的“引用”命令,激活“引用”对话框, 从打开的“引用”列表中选择“ Microsoft ActiveX Data Objects 2.8 Library”一项,然后单击“确定”按钮,把它引用到PowerPoint 幻灯片中来[4]。
在VBA开发环境的左侧,双击XY窗体,打开其对象编辑窗口,再次双击“开始练习”按钮,进入其代码编辑窗口。在窗口中输入如下代码:
Private Sub KSButton_Click()
XY.Hide
UserFormXZT.Show
End Sub
双击UserFormXZT窗体,选择“视图”菜单中的“代码窗口”切换到该窗体的代码编辑界面。
在界面的最前面,设置以下变量:
Dim sn As ADODB.Recordset
Dim cn As ADODB.Connection
Dim rownum As Integer, CurrentRow As Integer, CurrentNum As Integer
Dim XT_Array(100,5) As String
在窗体UserFormXZT的Initialize过程中输入如下代码:
Private Sub UserForm_Initialize()
ButtonST.Enabled=False
Dim constring As String
Set sn=New ADODB.Recordset
Set cn=New ADODB.Connection
constring="provider = microsoft.jet.OLEDB.4.0;" & "data source= " & "d:xtk.mdb"
cn.Open constring
sn.Open "xt", cn, adOpenStatic
CurrentRow=1
With sn
Do While Not .EOF
XT_Array(CurrentRow,0)=sn.Fields(0)
XT_Array(CurrentRow,1)=sn.Fields(1)
XT_Array(CurrentRow,2)=sn.Fields(2)
XT_Array(CurrentRow,3)=sn.Fields(3)
XT_Array(CurrentRow,4)=sn.Fields(4)
XT_Array(CurrentRow,5)=sn.Fields(5)
CurrentRow=CurrentRow+1
.MoveNext
Loop
rownum=CurrentRow-1
End With
CurrentNum=1
LabelTM.Caption=XT_Array(CurrentNum,0)
LabelDaA.Caption=XT_Array(CurrentNum,1)
LabelDaB.Caption=XT_Array(CurrentNum,2)
LabelDaC.Caption=XT_Array(CurrentNum,3)
LabelDaD.Caption=XT_Array(CurrentNum,4)
End Sub
在窗体UserFormXZT的“对象窗口”界面中双击“下一题“,在代码窗口中输入代码:
Private Sub ButtonXT_Click()
LabelCKDA.Caption=""
ButtonST.Enabled=True
CurrentNum=CurrentNum + 1
If CurrentNum=rownum Then ButtonXT.Enabled = False
LabelTM.Caption=XT_Array(CurrentNum,0)
LabelDaA.Caption=XT_Array(CurrentNum,1)
LabelDaB.Caption=XT_Array(CurrentNum,2)
LabelDaC.Caption=XT_Array(CurrentNum,3)
LabelDaD.Caption=XT_Array(CurrentNum,4)
End Sub
在窗体UserFormXZT的“对象窗口”界面中双击“上一题”按钮,在代码窗口中输入如下代码:
Private Sub ButtonST_Click()
LabelCKDA.Caption=""
ButtonXT.Enabled=True
CurrentNum=CurrentNum-1
If CurrentNum<=1 Then ButtonST.Enabled=False
LabelTM.Caption=XT_Array(CurrentNum,0)
LabelDaA.Caption=XT_Array(CurrentNum,1)
LabelDaB.Caption=XT_Array(CurrentNum,2)
LabelDaC.Caption=XT_Array(CurrentNum,3)
LabelDaD.Caption=XT_Array(CurrentNum,4)
End Sub
在“结束”按钮的代码窗口中输入如下代码:
Private Sub ButtonJS_Click()
UserFormXZT.Hide
End Sub
在“查看答案”按钮的代码窗口中输入如下代码:
Private Sub ButtonCKDA_Click()
LabelCKDA.Caption="答案为:"+XT_Array(CurrentNum,5)
End Sub
最后,在PowerPoint制作的课件幻灯片中制作一个“命令按钮”控件,设置其名称属性为DXLX,caption属性为“单项选择题练习”,其他属性默认。双击该按钮,在其代码窗口中输入如下代码:
Private Sub CommandButton1_Click()
XY.Show
End Sub
注意:要在幻灯片中运行VBA开发的代码,必须将PowerPoint文件保存为“启用宏的演示文稿”类型。在放映幻灯片中,单击“单项选择题练习”按钮即可进入相应的画面。
3 结束语
VBA是为office 设计的,作为office 软件之一的PowerPoint,如果在使用PowerPoint制作课件时, 如果能与VBA编程相结合[5],充分的利用VBA工具,可以使制作出的课件的交互功能得到大大的增强[6]。所介绍的利用VBA和数据库技术针对题量多的情况下做的习题设计,具有易于管理、交互性好的特点,更加符合使用者的认知学习。
参考文献:
[1]帅昌浩.PowerPoint课件教学在高等数学教学中的应用[J].重庆工商大学学报:自然科学版,2013(1):96-99
[2]郭红.基于VBA 技术的CAI课件制作[J].华北科技学院学报,2007(3):92-95
[3]党小云.于卫红.VBA在多媒体课件中的应用[J].电脑编程技巧与维护,2012(2):130
[4]颜清.PowerPoint课件中基于VBA的习题设计[J].计算机与现代化,2006(2):80-84
[5]李文江.VBA在PowerPoint 课件中的应用[J].重庆文理学院学报:自然科学版,2006(1):29-31
[6]程昌品.VBA在课件交互设计中的应用[J].电脑学习,2005(1):26-28