| PPT交互处理自动生成试题的解决方法 |
| 副标题: |
| 作者:周生军 文章来源:转贴K12论坛 点击数:
更新时间:2005-8-24 23:56:19 |
|
| |
'原理:后期绑定外部ACCESS数据库;使用两重循环语句(FOR...Next)自动生成试题控件,并利用数据库信息设置控件属性;使用框架的滑块,使试题能滚动,实现单个界面的大题库显现。 '环境:PPT2003,ACCESS库为97库(2002等可转换后使用)。 '使用控件:框架(Frame)、命令按钮(command) '自动生成控件:标签(Lable),其标题(caption)设为试题的题目;选项按钮(CheckBox)为选择项(预设为4个), '效果:界面生成时自动在框架内生成试题控件,并可利用框架滑块实现试题的全部显示,点击命令按钮退出界面。
初学者须知: 1、按ALT+F11,进入PPT的VB工程设计界面。 2、控件可以通过工具箱添加(可通过点击菜单“视图”/“工具箱”,显示“工具箱”)。 3、工具箱没有的控件可以通过在工具箱上点鼠标右键,在弹出的快捷菜单内选择“添加部件”查找。 4、“视图”菜单非常重要,要先熟悉一下。“属性窗口”、“工程资源管理器”等都可以通过它显示出来。 5、“插入”菜单也应先熟悉一下,插入类模块、用户窗口等都要用到它。 6、上传所有代码可直接拷贝使用。
前期准备: 建立试题的ACCESS数据库,文件名称为function_chr.mdb,内含表Chr。为方便下一步的学习,chr表建议设置字段8个(至少有4个),数值类型设为文本,其它依个人习惯设置吧。为便于通用,程序不要求字段名统一。第一个字段为试题的题目,后三个为选择项,每条记录代表一道试题。
言归正传,我们开始吧。 1、插入一个类模块(是类模块不是一般的模块),插入一个用户窗体(名称改为TestFrm)。点击用户窗体使用“视图”菜单调出“工具箱”、“用户资源管理器”。 2、在类模块的声明里声明连接数据库的两个关键对象变量: Public conn1 As ADODB.Connection Public setpxp As ADODB.Recordset 3、在用户窗体内添加一个框架控件和一个命令按钮,调整到合适大小;设置框架属性caption="":ScrollBars=2(即使用垂直滑块);名称在这里都采用缺省值。 4、设置命令按扭的Click方法(直接在它上面双击就出来了): Unload TestFrm'释放表单 5、双击用户表单(TestFrm),在通用声明区域内添加下列代码:
Option Explicit'变量必须先声明才能使用,避免变量的类型出现不可预测的错误,便于修改程序
'*---------------------------------------------------------------------* '*在VBA内使用一个Frame控件代替VB内的两个Picture控件实现试题的滚动显现 '*---------------------------------------------------------------------* '*---------------------------------------------------------------------* '*生成数据库连接及记录集实例对象 '*---------------------------------------------------------------------* Private dbconnect As New ADODB.Connection Private rs As New ADODB.Recordset
'*---------------------------------------------------------------------* '*定义自动添加的控件变量,以两重循环语句分别设计试题的题目的选项 '*---------------------------------------------------------------------* '使用 WithEvents 关键字声明对象变量,允许您编程该控件的事件。 '对象变量被设置为由 Add 方法返回的引用。 'Dim WithEvents labObject As Label'这是VB的用法,在VBA里行不通 'Dim WithEvents chkObject As CheckBox Dim Labobject As Control Dim ChkObject As Control
Private i, j As Integer '内外循环计数器 '*---------------------------------------------------------------------* '*确定自动添加的控件的相关参数 '*---------------------------------------------------------------------* Const WidthRubric = 320 '题目长度,即Label控件对象的长度 Const WidthOptn = 310 '放置选项的checkbox控件的最大长度 Const VDistance = 4 '纵向间距 Const HDistance = 5 '横向间距 Const LeftDistance = 5 '左边间距 Const LeftAppend = 20 '左悬挂距离 Const topini = 40 '第一行的顶部位置 Const nOpn = "4" '选项数目
Private WidthOptnExt As Integer '选项显示的实际长度 Private nLstChkTop As Integer '当前Checkbox的Top,计算下一控件的Top
6、在用户表单(TestFrm)的UserForm_Initialize的事件内添加下列代码。添加成功后,我们今天的目的就实现了。表单加载到内在里时先加载Load事件,Initialize事件在其后来初始表单及其上的所有控件。 Private Sub UserForm_Initialize()
'若连接对象已经建立,关闭它 If dbconnect.State = adStateOpen And Not IsEmpty(adStateOpen) Then dbconnect.Close '指定用于连接的提供者的名称,我理解为数据源的设备驱动程序 dbconnect.Provider = "microsoft.jet.oledb.4.0" 'access 97 ois 3.51 '通过传递详细的字符串来指定数据源,这里取用了相对路径调用 dbconnect.ConnectionString = "data\function_chr.mdb" '建立连接 dbconnect.Open
'若记录集已经打开关闭它 If rs.State = adStateOpen And Not IsEmpty(adStateOpen) Then rs.Close '按用户要求打开记录集,open的具体用法请查阅帮助; '游标类型选择键集游标(adOpenKeyset)和静态游标(adOpenStatic )时,recordcount属性才可用 rs.Open "chr", dbconnect, adOpenKeyset, adLockOptimistic 'chr是表名,包含中function_chr.mdb里,结果为全部字段的记录集 'rs.Open "select rubric from chr", dbconnect, adOpenDynamic, adLockOptimistic '查询结果为仅含字段Rubric的记录集
'*---------------------------------------------------------------------* '*定义自动添加的控件变量,以两重循环语句分别设计试题的题目的选项 '*---------------------------------------------------------------------* For i = "1" To rs.RecordCount '外层设置试题题目
'若对象变量存在先撤销 If Not IsEmpty(Labobject) And Not Labobject Is Nothing Then ..............
|
| 脚本录入:潜龙在野 责任编辑:潜龙在野
|
|
上一篇脚本: 用VBA实现课件中的智能交互(四)
下一篇脚本: 使用PowerPoint过程中积累的一些小经验 |
| 【字体:小
大】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口】
|