全国二级ACCESS教程第9章VBA数 据库 编程

上传人:w****i 文档编号:90938842 上传时间:2019-06-20 格式:PPT 页数:27 大小:626.50KB
返回 下载 相关 举报
全国二级ACCESS教程第9章VBA数 据库 编程_第1页
第1页 / 共27页
全国二级ACCESS教程第9章VBA数 据库 编程_第2页
第2页 / 共27页
全国二级ACCESS教程第9章VBA数 据库 编程_第3页
第3页 / 共27页
全国二级ACCESS教程第9章VBA数 据库 编程_第4页
第4页 / 共27页
全国二级ACCESS教程第9章VBA数 据库 编程_第5页
第5页 / 共27页
点击查看更多>>
资源描述

《全国二级ACCESS教程第9章VBA数 据库 编程》由会员分享,可在线阅读,更多相关《全国二级ACCESS教程第9章VBA数 据库 编程(27页珍藏版)》请在金锄头文库上搜索。

1、第9章 VBA数据库编程,Access数据库程序设计,授课教师:邓广彪 联系电话:13978773357 电子邮箱:,9.1.1 VBA常见操作,1、打开和关闭操作 (1) 打开窗体:DoCmd.OpenForm 窗体名 (2) 打开报表:DoCmd.OpenReport 报表名 (3) 关闭操作:DoCmd.Close 对象类型,对象名,2、输入框 格式:inputbox(“显示文字“,“标题文字“,“默认文字“) 说明:显示文字必须有,其他可以省略。,3、消息框 格式:msgbox(“提示文字“,按钮类型,“标题文字“) 说明:提示文字必须有,其他可以省略。,4、VBA验证函数 在控件中的

2、数据被改变之前或记录数据被更新之前会发生BeforeUpdate事件。 要记得表10-6的验证函数名及说明。,5、计时事件(Timer) Timer事件表示每隔指定的一段时间自动执行的代码。VBA中没有提供计时控件,一般是给窗体的Timer事件添加计时的时候执行的代码,然后通过设置TimerInterval属性的值确定多久执行一次(以毫秒为单位)Timer事件代码并马上开始按间隔执行Timer事件代码,如果设置TimerInterval的值为0则停止执行Timer事件。,例如:制作好下图所示的窗体,要求:按每隔100毫秒进行计时,开始时暂停按钮不能使用,正在计时过程计时按钮不能使用,暂停时暂停

3、按钮不能使用。其中文本框的名称为t,计时按钮的名称为play,暂停按钮的名称为pause,给窗体、计时按钮、暂停按钮、Timer事件添加的代码如下页所示。,Private Sub play_Click() 计时按钮单击代码 Me!pause.Enabled = True 设置暂停按钮可用 pause.SetFocus 将光标设置到暂停按钮 Me!play.Enabled = False 将计时按钮设为不可用 TimerInterval = 100 设置每隔100毫秒执行一次Timer事件 End Sub Private Sub Form_Load() 窗体load事件代码 Me!pause.E

4、nabled = False End Sub,Private Sub Form_Timer() 窗体timer事件代码 Static count As Double 定义为静态的使其能保留上一次计时的结果 count = count + 0.1 t = count End Sub Private Sub pause_Click() 暂停按钮单击事件代码 Me!play.Enabled = True play.SetFocus Me!pause.Enabled = False TimerInterval = 0 End Sub,9.1.2 VBA的数据库编程,在VBA中提供了3种数据库访问接口:

5、 1、开放式数据库ODBC 2、数据访问对象DAO 3、ActiveX数据对象ADO,DAO中的对象:DBEngine、Workspace、Database、RecordSet、Field、QueryDef、Error。,在VBA中可以通过编程来对表中的数据进行操作。在操作过程中主要使用的是数据访问对象DAO或ADODB提供的方法来操作,其主要的操作步骤为: 1、定义对应的变量。 2、打开数据库或连接到数据库。 3、打开表或执行SQL语句将记录集保存起来。 4、读取记录集中的字段保存到变量中。 5、循环读取字段中的每一个值进行汇总、更新、添加、删除的操作。 6、关闭记录集及关闭数据库。,1、定

6、义对应的变量:主要代码如下 Dim db As DAO.Database 定义变量db用来保存要使用的数据库 Dim rs As DAO.Recordset 定义变量rs用来保存要使用的记录集 Dim mc As DAO.Field 定义字段变量用来保存某个字段的所有值 Dim num As DAO.Field 如果要读取多个字段的值则需要定义多个DAO.Field类型的字段变量,2、打开数据库或连接到数据库。 Set db = CurrentDb() 设置数据库为当前使用的数据库,3、打开表或执行SQL语句将记录集保存起来。 Set rs = db.OpenRecordset(“班级信息表“

7、) 打开表或查询的内容保存到记录集中,双引号中的为要打开的表,也可以是一条SQL语句。,4、读取记录集中的字段保存到变量中。 Set mc = rs.Fields(“班级名称“) 读取字段的所有值保存到字段变量中,并指向第一个值 Set num = rs.Fields(“人数“) 如果要读取多个字段的值,每个字段都需要这样读,5、循环读取字段中的每一个值进行汇总、更新、添加、删除的操作。 Do While Not rs.EOF 还没读到最后一条记录 对读取得到的记录进行操作 rs.MoveNext 读取下一条记录 Loop 上述红色的两个地方一般都是必须的。,举例:读取“班级信息表”中的所有班

8、级名称并提示。具体代码如下: Sub abc() Dim db As DAO.Database Dim rs As DAO.Recordset Dim mc As DAO.Field Set db = CurrentDb() Set rs = db.OpenRecordset(“班级信息表“) Set mc = rs.Fields(“班级名称“) Do While Not rs.EOF MsgBox mc rs.MoveNext Loop rs.Close db.Close End Sub,如果读取的是数值型字段的值,可以用保存该字段的变量直接与一个数值型变量进行运算。 举例:循环读取“班级信

9、息表”中“人数”字段的值,将所有的人数之和保存到变量sum中。 代码见下一张幻灯片。,Sub abc() Dim db As DAO.Database Dim rs As DAO.Recordset Dim num As DAO.Field Dim sum As Integer Set db = CurrentDb() Set rs = db.OpenRecordset(“班级信息表“) Set num = rs.Fields(“人数“) Do While Not rs.EOF sum = sum + num rs.MoveNext Loop MsgBox sum rs.Clone db.Cl

10、ose End Sub,如果想对当前读取到的记录进行修改,可以使用“字段变量 = 值”的格式进行修改,但在修改前必须要使用rs.Edit表示允许进行修改,修改后必须使用rs.Update进行更新。 举例:对“班级信息表”中“班级名称”以“艺术”开头的班级,将人数增加100。 代码见下一张幻灯片。,Sub abc() Dim db As DAO.Database Dim rs As DAO.Recordset Dim mc As DAO.Field Dim num As DAO.Field Set db = CurrentDb() Set rs = db.OpenRecordset(“班级信息表

11、“) Set mc = rs.Fields(“班级名称“) Set num = rs.Fields(“人数“) Do While Not rs.EOF If mc Like “艺术*“ Then rs.Edit num = num + 100 rs.Update End If rs.MoveNext Loop rs.Clone db.Close End Sub,如果想对当前读取到的记录进行删除,rs.Delete进行删除。 举例:删除“班级信息表”中“人数”大于50的记录。 代码见下一张幻灯片。,Sub abc() Dim db As DAO.Database Dim rs As DAO.Re

12、cordset Dim num As DAO.Field Set db = CurrentDb() Set rs = db.OpenRecordset(“班级信息表“) Set num = rs.Fields(“人数“) Do While Not rs.EOF If num 50 Then rs.Delete End If rs.MoveNext Loop rs.Close db.Close End Sub,对记录集rs还有如下操作: rs.AddNew:添加一条新记录 rs.MoveFirst:移动到记录集的第一条记录 rs.MoveLast:移动掉记录集的最后一条记录 rs.MovePre

13、vious:往上移动一条记录,在考试过程中,近几年的填空题都是考对rs记录集的操作,如rs.EOF、rs.update、rs.MoveNext。所以在考试时要注意看循环的条件填rs.EOF还是Not rs.EOF,有更新记录的就填rs.update(但之前必须有rs.edit),循环中没有rs.MoveNext就填它。,5、几个特殊域聚合函数及RunSQL (2) 了解并记住DCount、Davg、DSum、DMax、DMin函数的功能,使用格式均如下: 函数名(“字段名“, “表或查询的名称“,“条件“) 说明:其中条件可以省略,条件的写法为:字段名 符号 值。 功能:从对应的表或查询中,对

14、满足条件的指定字段做对应函数功能的统计。,如:Dcount(“StuID“,“StuInfo“) DAvg(“成绩“,“学生成绩表“,“课程名=Java“) DMax(“成绩“,“学生成绩表“,“StuID=110004“),(3)DLookup函数:是从指定的记录集中检索特定字段的值,格式如下: DLookup(“字段名“,“表或查询的名称“,“条件“) 说明:其中条件可以省略,条件的写法为:字段名 符号 值。 功能:从对应的表或查询中,得到满足条件、指定字段的第一个值。,如:DLookup(“成绩“,“学生成绩表“,“成绩90“) DLookup(“StuName“,“StuInfo“,“

15、StuFrom=广西北海“),(4)DoCmd对象的RunSQL方法:运行执行参数中的SQL语句,这个SQL语句可以是select、update等等,使用格式如下: DoCmd.RunSQL(字符串型的SQL语句),补充知识:双重循环的执行,在循环结构中,可以在一个循环的循环体中嵌套另外一个完整的循环,执行时是如果外的条件成立,则执行循环体,由于外循环的循环体中又包含另外一个循环(称为内循环),所以需要把内循环完整的执行一次。只有外循环的条件不成立才会结束循环语句的执行。,分析如下代码,考虑为什么提示的结果是55。,Sub abc() Dim sum, i, j As Integer sum = 1 For i = 2 To 4 For j = 1 To 3 sum = sum + i * j Next Next MsgBox sum End Sub,分析如下代码,考虑为什么提示的结果是25。,Sub abc() Dim sum, i, j As Integer For i = 2 To 4 sum = 1 For j = 1 To 3 sum = sum + i * j Next Next MsgBox sum End Sub,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号