打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
PowerPoint 多媒体交互课件制作(VBA编程初步)

PowerPoint 多媒体交互课件制作(VBA编程初步)

第五章 数据库连接与操作

[日期:2008-11-18]来源:广州大学  作者:叶永机[字体: ]


第五章 第一节  数据库入门

    制作多媒体课件时,教师们通常把文字、声音、图像、动画与视频资源集于一身,做出来的课件图文并茂,教学效果好。但如果每一节课都能做到图文并茂的话,那是不可能的,也没有必要这样做。要根据不同学科教学的需要来确定教学资源,有的课程,经常需要处理一些数据,通过数据的处理来达到教学目标,而非文字与图像能够做的事;有的课程,需要大量的实验数据或信息资源来实施教学,必须通过从数据库中读取数据来实现。因些,要制作符合学科教学特色的实用性教学课件,除文字、声音、图像、动画与视频资源信息外,对数据的分析与处理,作为提升多媒体课件的教学功能,这是十分必要的。

   

   一、数据的来源

 

 

    学科教学中用到的数据,一般是从实践中得到数据资料,再通过录入操作,把实践得到的数据录入计算机中保存。数据的保存方法,通常是通过以下几种方式:

    1.直接把数据录入Powerpoint幻灯片中的表格中。通过PPT绘制表格,把数据直接录入幻灯片的表格内。这种表格内的数据,通过VBA程序可以访问数据。

    2.把数据录入EXCEL电子表格。数据保存在EXCEL电子表格有二种情况:

    第一种是以EXCEL文件格式独立保存,这种数据保存在Powerpoint应用程序的外部,作为个部数据资源。第二种是在Powerpoint幻灯片中,以“对象”的形式插入EXCEL电子表格,把数据保存于Powerpoint文件中。这两种电子表格的数据,在PPT中很难通过VBA编程来访问与处理,一般是把数据通过手动操作与处理后,把数据结果显示在幻灯片上。 

    通过EXCEL电子表格录入数据是教师最常用的保存数据的方法,但电子表格数据只能独立处理完毕,通过内容的复制办法将数据粘贴到幻灯片片上。

    3.把数据录入ACCESS数据库中。

    数据库保存又以ACCESS数据库形式最多,使用ACCESS数据库处理数据,教师应用得比较少,因为ACCESS数据库是一种关系型数据库,保存于数据表中,需要访问与操作时必须打开数据库,使用起来比EXCEL电子表格不方便,一般是通过编写应用程序来访问ACCESS数据库的。

    在PPT课件中,可以通过VBA编程,访问ACCESS数据库的数据来达到数据分析与处理的目的,提高其处理数据的能力。

   二、ACCESS数据库的基本操作

 

 

    一般来说,教师在制作课件过程中,通常都要把所有需要显示的文字(如试题内容)都要事先写在幻灯片文字框内,在教学演示过程中,按顺序点击鼠标,文字动画就会按照教师原先设想的思路全部显示出来。如果用这种方法制作“练习试题”课件,教师的工作量大,每一道题都要事先把判断对错的动画做好,每一道题目都要事先写在幻灯片页面上 ,用这种办法做出来的课件让学生学习、操作,学生就会没有什么兴趣了。

   “数据库”是一个大容量储存器,可以储存大量的教学资源信息,可以储存文字、数据、图像等种格式的数据。例如,用于储存试题 库,需要时调出来使用,相当方便。通过VBA编程可以做到这一点。下面简单介绍建立ACESS数据库的操作。

    操作方法如下:

    (1)打开Office办公软件中的 Access数据库软件;

    (2)建立数据库。点击菜单“新建”-->“空数据库”,打开对话框,输入要保存的数据库文件名:(例如,文件名取: text.mdb ),再点击“创建”。完成一个空数据库的操作,并显示“数据库”管理器窗口,但里面还没有任何数据表。如下图:

 

 

    (3)创建一个数据表。在打开的“数据库”管理器窗口中,双击“使用设计器创建表”,即可打开数据表设计。在这里,你可以设计出个试题库的“表结构”,所谓“表结构”就是要保存试题的表头及格式,例如要在表中将要保存以下数据:“题号、题目、答案1、答案2、答案3、答案4、正确答案、备注”等信息,那么在表设计中必须把这些表结构信息设计好,然后再录入数据。为了方便,暂时把表设计定义为选择题的形式,有4个答案供选择(如果不止4个答案,可定义更多答案)如下表:

字段名称数据类型字段大小说明
题号文本4 
题目文本100 
A文本50答案1
B文本50答案2
C文本50答案3
D文本50答案4
正确答案文本4 
备注文本50 

 

    定义好表结构后,点击“保存”,输入一个表名称(例如:选择题),再点击“确定”,这样,一个空的表建立完毕。在“数据库”管理器中增加了一个名称为“选择题”的表。

    (4)录入试题数据。双击“选择题”表,即打开表编辑窗口,这时,你可以录入你的数据了,录入过程就不用讲了,与电子表格录入差不多吧。最后,记住保存数据。如果你不熟悉在表编辑内录入数据,你可以在电子表格(EXCEL)中事先输入一个完整的试题库电子表格,再使用ACCESS数据库“获取外部数据”功能实现数据的导入。方法是:依次点击“文件-->获取外部数据-->导入”命令,打开“导入”窗口,在“文件类型”中选择XLS类型,按提示一步一步完成就可以了。

第五章 第二节  数据库连接与操作

一、连接ACCESS数据库

 

 

    一般情况下,使用Powerpoint应用程序,数据库对象是没有被引用的。要使用数据库,必须引用数据库对象(ADO)来达到目的。引用数据对象的一般步骤为:

    (1)切换到PowerPoint中的Visual Basic编辑器;

    (2)执行“工具/引用”菜单命令;

    (3)在打开的对话框中选择要引用的ActiveX数据对象,在打开的引用对象对话框列表中选择Microsoft ActiveX Data Objects 2.0 library项,再按“确定”按钮。
   (4)创建连接数据对象及操作数据对象。

    在创建VBA宏代码中使用ADO的Connection对象中的Open方法建立到数据库的连接,其语法为:
Connection.Open ConnectionSting,UserID,Password,Options
    Connection连接对象代表与数据库连接,它是与数据库进行的惟一会话,在使用数据库之前,必须建立Connection对象。

    语法中ConnectionSting为包含连接信息的字符串,UserID参数为建立连接时使用的用户名,参数Password为建立连接时使用的口令,参数Options为用于建立连接时是否等待连接还是立即返回。

    (5)创建数据记录表对象。

    在打开数据库后,还必须创建记录集对象Recordset,同时使用OPen方法打开相应的数据表记录集,

 

    操作实例:假设在电脑D:盘有一个数据库text.mdb ,该数据库中有一个数据表叫“选择题”,从定义变量到打开数据表需要下面几个语句,必须的,不可缺少('号后面的文字是注释)。

 

    Dim cnnpxp As New ADODB.Connection  '定义连接数据库对象,

    Dim setpxp As New ADODB.Recordset   '定义创建记录集对象
    Dim constring As String            
’定义连接字符串变量
    constring = "provider=microsoft.jet.oledb.4.0;" & "data source=" & "d:\text.mdb"        
 '给字符串constring赋值,数据库d:\text.mdb根据实际路径改变
    cnnpxp.Open constring 
 '打开数据库
    setpxp.Open "选择题", cnnpxp, adOpenStatic, adLockOptimistic
 

    以上步骤,第(1,2,3)步表示引用数据库成功,要实现第(4,5)步,还要在宏代码中通过编程输入连接数据库语句来实现打开数据库 及数据表的操作,因此,这些代码需要在具体操作过程中进一步描述代码写在哪里。

二、实例: 制作与数据库链接的试题

 

 

    请看实例: 5.2制作与数据库链接的试题.rar

    操作步骤简要说明如下:

    1.创建一张白幻灯片,设置一个“命令按钮”(Caption取值“显示窗体试题”)

    2.打开VBA编辑器,添加一个用户窗体(userform1),在窗体中添加控件:3个文字框、4个命令按钮等控件,4个命令按钮分别是(开始出题、上一题、下一题、统计总分)如下图:

 

    3.双击任一个控件,打开代码编辑窗口,复制如何代码:

Dim setpxp As New ADODB.Recordset
Dim cnnpxp As New ADODB.Connection
Dim constring As String
Dim th, tm, da1, da2, da3, da4, da5 As String
Dim a(50), b(50), c(50)
Dim i, j, row, sum As Integer

Private Sub CommandButton1_Click() '开始出题
constring = "provider=microsoft.jet.oledb.4.0;" & "data source=" & "d:\text.mdb"

'如果你的数据库不在D盘,请修改路径
cnnpxp.Open constring
setpxp.Open "选择题", cnnpxp, adOpenStatic, adLockOptimistic
row = 0
With setpxp
Do While Not .EOF
row = row + 1
setpxp.MoveNext
Loop
End With
setpxp.MoveFirst

If Not setpxp.EOF Then
i = setpxp("编号")
th = setpxp("题号")
tm = setpxp("题目")
'以下是四个答案
da1 = setpxp("A")
da2 = setpxp("B")
da3 = setpxp("C")
da4 = setpxp("D")
a(i) = setpxp("正确答案") '正确答案
c(i) = setpxp("分数") '读取分数

CommandButton1.Enabled = False
CommandButton2.Enabled = True
If i < row Then
CommandButton3.Enabled = True
Else
CommandButton3.Enabled = False
End If
CommandButton4.Enabled = False
TextBox1.Text = th + " " + tm
TextBox2.Text = "答案A:" + da1 + " B:" + da2 + " C: " + da3 + " D: " + da4
TextBox3.Text = b(i)

End If
End Sub

Private Sub CommandButton2_Click() '提交答案
i = 1
sum = 0
For i = 1 To row
If UCase(b(i)) = UCase(a(i)) Then
sum = sum + c(i)
End If
MsgBox i & "," & b(i) & "," & a(i)
Next i
MsgBox "统计总分是:" & sum
End Sub

Private Sub CommandButton3_Click() '下一题
setpxp.MoveNext
CommandButton4.Enabled = True

If Not setpxp.EOF Then
i = setpxp("编号")
th = setpxp("题号")
tm = setpxp("题目")
da1 = setpxp("A")
da2 = setpxp("B")
da3 = setpxp("C")
da4 = setpxp("D")
a(i) = setpxp("正确答案") '正确答案
c(i) = setpxp("分数") '读取分数

TextBox1.Text = th + " " + tm
TextBox2.Text = "答案A:" + da1 + " B:" + da2 + " C: " + da3 + " D: " + da4
TextBox3.Text = b(i)
End If
If i < row Then
CommandButton3.Enabled = True
Else
CommandButton3.Enabled = False
End If
End Sub

Private Sub CommandButton4_Click() '上一题
If setpxp.BOF Then
CommandButton4.Enabled = False
Else
setpxp.MovePrevious
CommandButton3.Enabled = True
If Not setpxp.BOF Then
i = setpxp("编号")
th = setpxp("题号")
tm = setpxp("题目")
da1 = setpxp("A")
da2 = setpxp("B")
da3 = setpxp("C")
da4 = setpxp("D")
a(i) = setpxp("正确答案") '正确答案
c(i) = setpxp("分数") '读取分数

TextBox1.Text = th + " " + tm
TextBox2.Text = "答案A:" + da1 + " B:" + da2 + " C: " + da3 + " D: " + da4
TextBox3.Text = b(i)
End If
End If
If i > 1 Then
CommandButton4.Enabled = True
Else
CommandButton4.Enabled = False
End If
End Sub

Private Sub TextBox3_Change()
b(i) = TextBox3.Text
End Sub

 

 

    注意:在自己制作时,上面代码中命令按钮及其它控件的名称若有不对应的,请看清楚再复制代码,否则代码事件将会发生错误。

三、实例:从ACCESS数据库中导入数据到幻灯片

 

 

    操作方法如下:

    1、打开PowerPoint在新建的演示文稿插入两个空白幻灯片;
    2、单击 “控件工具箱”中要添加的“命令按钮”图标,在第一个空白幻灯片输入有关实验数据处理的文字并在合适位置插入一个命令按钮;
    3、选定刚插入的命令按钮后,单击 “控件工具箱”中“属性”图标,在caption属性值改为“导入实验数据”,即命名为“导入实验数据”命令按钮;
    4、执行“工具/宏/ Visual Basic编辑器”菜单命令,在打开的Visual Basic编辑器中输入以下宏代码:

(1)定义变量
Public setpxp As New ADODB.Recordset
Public cnnpxp As New ADODB.Connection
Dim constring As String
(2)调用“输入框”和 “消息框”
yourName = InputBox("请输入姓名(学号)", "实验数据处理课件(合金熔点的确定)")
x = MsgBox("你的姓名(学号): " & yourName, 0, "实验数据处理课件(合金熔点的确定)")
If x = 1 And yourName <> "" Then '满足条件显示第二个幻灯片
SlideShowWindows(Index:=1).View.GotoSlide 2
End If
(3)插入一个通用对话框
单击“控件工具箱”中的“其他控件”按钮,在打开的对话框中选择Microsoft Common Dialog Control Version 6.0项,插入在第一个幻灯片中,其宏代码为:
CommonDialog1.InitDir = "D:\temp"
CommonDialog1.Filter = "文本文件|*.mdb"
CommonDialog1.ShowOpen '显示“打开”通用对话框,并选择有关文件(pxpmdb.mdb)“打开”
constring = "provider=microsoft.jet.oledb.4.0;" & "data source=" & CommonDialog1.FileName
cnnpxp.Open constring '建立与数据库pxpmdb.mdb(在目录D:\temp中存在)的连接
setpxp.Open "pxp", cnnpxp, adOpenStatic '指定表名pxp(pxpmdb.mdb中含有pxp表)
row = 2
With setpxp
   Do While Not .EOF '将表pxp中的数据给数组sy()赋值及用row检索表pxp的行数
   sy(row, 1) = setpxp.Fields(0) '将pxp表中的相应数据给相应的数组元素sy()赋值,下同
   sy(row, 2) = setpxp.Fields(1)
   sy(row, 3) = setpxp.Fields(2)
   row = row + 1
   .MoveNext '将数据库pxp表中的指针下移一行
   Loop
   row = row – 1
   If .EOF Then
      .Close '数据导入完成后关闭数据库Recordset对象
      Set setpxp = Nothing释放内存空间
   End If
End With
(4)在第二个幻灯片Slides(2)中插入的表格并自动导入实验数据
col = 3 '列数设置
ActivePresentation.Slides(2).Shapes.title.TextFrame.TextRange = "自动导入实验数据" '加入标题文字
Set tb51 = ActivePresentation.Slides(2).Shapes.AddTable(row, col, 250, 100, 430, 80).Table '插入表格
ActivePresentation.Slides(2).Shapes(1).Fill.ForeColor.RGB = RGB(255, 230, 0)
tb51.Cell(1, 1).Shape.TextFrame.TextRange.Text = "序号" '输入表头,下同
tb51.Cell(1, 2).Shape.TextFrame.TextRange.Text = "合金含铝量(%)"
tb51.Cell(1, 3).Shape.TextFrame.TextRange.Text = "合金熔点(摄氏度)"
For x = 2 To row '在表格中自动导入数据
For y = 1 To 3
If y = 1 Then
tb51.Cell(x, y).Shape.TextFrame.TextRange.Text = Format$(sy(x, y), "##00")
Else
tb51.Cell(x, y).Shape.TextFrame.TextRange.Text = Format$(sy(x, y), "######0.00")
End If
Next y
Next x
cnnpxp.Close '关闭连接


    在PowerPoint中利用VBA对Microsoft的ActiveX数据对象(ADO)的引用能使PowerPoint链接到外部数据库并进行通信,这一功能克服了PowerPoint的不足,加强了PowerPoint与其它应用程序的数据通信和数据交换,极大地提升了PowerPoint的交互功能和多媒体课件的开发能力。

第五章 本章小结

   在制作PPT多媒体课件过时,通常很少教师会想到数据的处理问题,但在日常的学科教学过程中,时常都会对数据进行处理,因此本章把数据库的操作列入本课程学习 内容。
    本章主要介绍了数据库入门、数据库连接与 操作基础、PPT幻灯片与数据的存取。但是,Powerpoint与数据的通信功能只能靠以编程的方式来实现,而且操作起来不是那么方便,一般会认为使用Excel电子表格处理数据更为合适,因此,本章学习内容难度相当大,只作为入门式的要求。

    通过本章学习,总的要求是,初步理解利用数据库管理教学信息资源, 充分理解利用数据库储存教学信息资源的重要性。掌握PPT课件与ACCESS数据库的连接方法,学会在课件中读取数据库资源,以增强PPT课件的数据读取及处理能力。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
为PowerPoint加一个电子白板
PPT课件制作与演示技巧
powerpoint 交互性课件的制作方法
。。
PPT中对象插入的8个技巧
PowerPoint解决课件中的配音难题
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服