1、第第1111章章 建立建立以以Access数据库为数数据库为数据源的应用程序据源的应用程序目录目录11.1 问题引入与运行效果问题引入与运行效果11.2 认识认识Access数据库数据库11.3 创建创建Access数据库数据库11.4 连接数据库和数据表连接数据库和数据表11.5 将数据识别控件绑定到将数据识别控件绑定到ADO控件控件11.6 编写移动记录指针的代码编写移动记录指针的代码11.7 编写添加记录和确认代码编写添加记录和确认代码11.8 编写删除记录的代码编写删除记录的代码 11.9 显示记录总数和当前记录序号显示记录总数和当前记录序号11.10 编写查询记录的代码编写查询记录的
2、代码11.11 利用利用ADO对象模型编程对象模型编程 11.12 本章课堂实训和课后作业本章课堂实训和课后作业11.1 11.1 问题引入与运行效果问题引入与运行效果11.2 11.2 认识认识AccessAccess数据库数据库(1)(1)11.2 11.2 认识认识AccessAccess数据库数据库(2)(2)员工编号姓名标准工资奖金各种补助05021201张圳110050050005021202梁雨160090070005021203张涛2100100080005031201王亮130080050005031202郭健17501200500.员工信息数据表员工信息数据表行列table
3、Data Base字段(列)字段(列)记录(行)记录(行)表表(对象对象)数据库(数据库(.mdb文件)文件)recordfield11.3 11.3 创建创建AccessAccess数据库数据库(1)(1)字段名数据类型大小员工编号文本8姓名文本10标准工资数字双精度型奖金数字双精度型各种补助数字双精度型11.3 11.3 创建创建AccessAccess数据库数据库(2)(2)新建库新建库(空空)新建表新建表1.输入表结构输入表结构2.输入表记录输入表记录11.4 11.4 连接数据库和数据表连接数据库和数据表(1)(1)11.4 11.4 连接数据库和数据表连接数据库和数据表(2)(2)
4、11.4 11.4 连接数据库和数据表连接数据库和数据表(3)(3)11.5 11.5 将数据识别控件绑定到将数据识别控件绑定到ADOADO控件控件11.6 11.6 编写移动记录指针的代码编写移动记录指针的代码p第一条:第一条:padodc1.recordset.adodc1.recordset.movefirstmovefirstp上一条:上一条:padodc1.recordset.adodc1.recordset.movepreviousmovepreviouspIf adodc1.recordset.If adodc1.recordset.bofbof then adodc1.reco
5、rdset.movefirst then adodc1.recordset.movefirstp下一条:下一条:padodc1.recordset.adodc1.recordset.movenextmovenextpIf adodc1.recordset.If adodc1.recordset.eofeof then adodc1.recordset.movelast then adodc1.recordset.movelastp最后一条:最后一条:adodc1.recordsetadodc1.recordset.movelast.movelast11.7 11.7 编写添加记录和确认代码编写
6、添加记录和确认代码 p 添加添加pAdodc1.recordset.Adodc1.recordset.AddNewAddNew添加一条新的空记录添加一条新的空记录p 确认确认p a=MsgBox(a=MsgBox(确实要添加记录吗?确实要添加记录吗?,vbYesNo),vbYesNo)p If a=vbYes Then If a=vbYes Thenp adodc1.recordset.adodc1.recordset.UpdateUpdate更新更新p ElseElsep adodc1.recordset.adodc1.recordset.CancelUpdateCancelUpdate 放
7、弃更新放弃更新pEnd IfEnd If11.8 11.8 编写删除记录的代码编写删除记录的代码 s=MsgBox(s=MsgBox(确实要删除该记录吗?确实要删除该记录吗?,vbYesNo),vbYesNo)If s=vbYes ThenIf s=vbYes Thenadodc1.recordset.adodc1.recordset.DeleteDeleteadodc1.recordset.MoveNextadodc1.recordset.MoveNextIf adodc1.recordset.EOF Then.MoveLastIf adodc1.recordset.EOF Then.Mov
8、eLastEnd If End If 11.9 11.9 显示记录总数和当前记录序号显示记录总数和当前记录序号Private Sub Private Sub Text1_ChangeText1_Change()()Label7(1).Caption=Adodc1.Recordset.Label7(1).Caption=Adodc1.Recordset.RecordCountRecordCount Label7(4).Caption=Adodc1.Recordset.Label7(4).Caption=Adodc1.Recordset.AbsolutePositionAbsolutePositi
9、onEnd Sub End Sub 11.10 11.10 编写查询记录的代码(编写查询记录的代码(1 1)11.10 11.10 编写查询记录的代码(编写查询记录的代码(2 2)1.查找常量查找常量 Adodc1.Recordset.Find 姓名姓名=张三张三 Adodc1.Recordset.Find 标准工资标准工资2000 Adodc1.Recordset.Find 出生日期出生日期=#2000/1/1#2.查找变量查找变量 x=InputBox(请输入要查询的值请输入要查询的值,查询输入查询输入)Adodc1.Recordset.Find 姓名姓名=&x&Adodc1.Record
10、set.Find 标准工资标准工资&x Adodc1.Recordset.Find 出生日期出生日期=#&x.模糊查询模糊查询 Adodc1.Recordset.Find 姓名姓名 like*红红*Adodc1.Recordset.Find 姓名姓名 like*&x&*11.10 11.10 编写查询记录的代码(编写查询记录的代码(3 3)保存书签保存书签bmark=Adodc1.Recordset.Bookmark查找查找Adodc1.Recordset.Find 查找条件字符串查找条件字符串 ,0,1,1 查找满足条件的第查找满足条件的第1条条Adodc1.Recordset.Fin
11、d 查找条件字符串查找条件字符串,1,1,0 查找满足条件的下查找满足条件的下1条条若没找到,提示并恢复书签若没找到,提示并恢复书签If Adodc1.Recordset.eof thenMsgbox 无此记录无此记录Adodc1.Recordset.Bookmark=bmarkendif或或11.11 11.11 利用利用ADOADO对象模型编程对象模型编程(1)(1)对象模型定义了程序中所使用的对象之间的关系即对象的分层结构,它能够以一种使编程变得更容易的方式来组织对象。对象模型表达了包含关系,可以认为某些对象是包含其它对象的对象,或者是由其它对象所组成的对象。11.11 11.11 利用
12、利用ADOADO对象模型编程对象模型编程(2)(2)ConnectionRecordsetFieldsFieldCommandParametersParameterErrorsErrorpConnectionConnection对象代表了与数据源的连接;对象代表了与数据源的连接;pRecordsetRecordset对象表示的是来自表或做为命令执行结果的记录集;对象表示的是来自表或做为命令执行结果的记录集;pCommandCommand对象代表对数据源执行的命令;对象代表对数据源执行的命令;11.11 利用利用ADO对象模型编程对象模型编程(3)引用ADO的类型库声明对象变量创建对象的一个实例
13、调用该对象的成员,使用该对象及其成员的属性和方法处理对象 关闭对象,释放对象所占据的空间11.11 11.11 利用利用ADOADO对象模型编程对象模型编程(4)(4)选择选择“工程工程”菜单中的菜单中的“引用引用”菜单项,打开菜单项,打开“引用引用”对话框,在对话框,在“可用的引用可用的引用”列表框中选中列表框中选中ADOADO类型库类型库“Microsoft ActiveX Data Microsoft ActiveX Data Objects 2.8 Library”Objects 2.8 Library”后后“确定确定”。在代码窗口的通用声明段输入以下声明对象变量的语句在代码窗口的通用
14、声明段输入以下声明对象变量的语句:Dim cn As ADODB.ConnectionDim cn As ADODB.ConnectionDim rs As ADODB.RecordsetDim rs As ADODB.Recordset11.11 11.11 利用利用ADOADO对象模型编程对象模型编程(5)(5)在在Form_LoadForm_Load事件过程中创建这两个对象的实例事件过程中创建这两个对象的实例:Private Sub Form_Load()Set cn=New ADODB.Connection Set cn=New ADODB.Connection Set rs=New
15、ADODB.Recordset Set rs=New ADODB.RecordsetEnd Sub11.11 11.11 利用利用ADOADO对象模型编程对象模型编程(6)(6)调用调用RecordsetRecordset对象的对象的OpenOpen方法连接数据库中的表方法连接数据库中的表rs.Open info,cn,adOpenKeyset,adLockOptimisticrs.Open info,cn,adOpenKeyset,adLockOptimistic用创建的用创建的ConnectionConnection对象实现与数据库的连接对象实现与数据库的连接cn.Provider=Mic
16、rosoft.jet.oledb.4.0 cn.Provider=Microsoft.jet.oledb.4.0 cn.Open App.Path&“wages.mdb”cn.Open App.Path&“wages.mdb”数据源数据源(表名)(表名)ConnectionConnection对对象象锁定类型锁定类型adLockReadOnlyAdLockPessimisticAdLockOptimisticAdLockBatchOptimistic游标类型游标类型adOpenForwardOnlyadOpenKeysetadOpenDynamicadOpenStatic11.11 11.11
17、 利用利用ADOADO对象模型编程对象模型编程(7)(7)Dim i As IntegerFor i=0 To 4 Set txt_Wageinfo(i).DataSource=rs txt_Wageinfo(i).DataField=rs(i).NameNext i11.11 11.11 利用利用ADOADO对象模型编程对象模型编程(8)(8)和使用ADO数据控件的方法非常类似:rs.MoveFirst rs.MoveFirst 第一条第一条rs.MovePrevious rs.MovePrevious 上一条上一条If rs.BOF Then rs.MoveFirstIf rs.BOF Then rs.MoveFirstrs.MoveNextrs.MoveNext 下一条下一条If rs.EOF Then rs.MoveLastIf rs.EOF Then rs.MoveLastrs.MoveLastrs.MoveLast 最后一条最后一条11.12 11.12 课堂实训和课后作业课堂实训和课后作业