VB数据库编程技术

上传人:hs****ma 文档编号:567962687 上传时间:2024-07-22 格式:PPT 页数:85 大小:878.50KB
返回 下载 相关 举报
VB数据库编程技术_第1页
第1页 / 共85页
VB数据库编程技术_第2页
第2页 / 共85页
VB数据库编程技术_第3页
第3页 / 共85页
VB数据库编程技术_第4页
第4页 / 共85页
VB数据库编程技术_第5页
第5页 / 共85页
点击查看更多>>
资源描述

《VB数据库编程技术》由会员分享,可在线阅读,更多相关《VB数据库编程技术(85页珍藏版)》请在金锄头文库上搜索。

1、第第6 6章章 VBVB数据库编程技术数据库编程技术 6 61 1数据库设计基础数据库设计基础数据库设计基础数据库设计基础6 62 2本地数据库设计(本地数据库设计(本地数据库设计(本地数据库设计(ACCESSACCESS) 6 63 3数据控件数据控件数据控件数据控件 6 64 4ODBCODBC6 65ADO5ADO数据控件数据控件数据控件数据控件 6 66VB6VB中中中中SQLSQL的实现的实现的实现的实现 6 67 7VBVB中使用中使用中使用中使用ODBCODBC 6 68 8网络数据库设计网络数据库设计网络数据库设计网络数据库设计 1. 1. VBVB中的数据访问中的数据访问nV

2、BVB提供的数据库引擎叫提供的数据库引擎叫JetJet。nVBVB提供了两种与提供了两种与JetJet数据库引擎接口的方法:数据库引擎接口的方法: DataData控控件件( (Data Data Control)Control)和和数数据据访访问问对对象象( (DAO)DAO)。这两种方法可以同时使用。这两种方法可以同时使用。 6 6.1 .1 数据库设计基础数据库设计基础 DataData控件提供了有限的控件提供了有限的不需编程就能访问现存不需编程就能访问现存数据库的功能数据库的功能DAODAO模型是全面控制模型是全面控制数据库的完整编程接口数据库的完整编程接口nVBVB通过通过DAODA

3、O、ADOADO和和JetJet引擎可以识别三类数据库:引擎可以识别三类数据库:(1 1)VBVB数据库数据库 n也也称称本本地地数数据据库库,本本地地数数据据库库文文件件格格式式与与Microsoft Microsoft AccessAccess相同。相同。JetJet引擎直接创建和操作这些数据库。引擎直接创建和操作这些数据库。(2 2)外部数据库)外部数据库 n访访问问符符合合“索索引引顺顺序序访访问问文文件件方方法法( (ISAM)ISAM)”数数据据库库,包包括括:dBase dBase IIIIII、dBasedBase IVIV、FoxproFoxpro 2.02.0和和2.52.

4、5以以及及Paradox 3.xParadox 3.x和和4.4.x x。(3 3)ODBCODBC数据库数据库 n访访问问符符合合ODBCODBC标标准准的的客客户户机机服服务务器器数数据据库库,如如Microsoft SQL ServerMicrosoft SQL Server。6 6.1 .1 数据库设计基础数据库设计基础 2 . 2 . VBVB数据库体系结构数据库体系结构nJetJet引引擎擎负负责责处处理理存存储储、检检索索、更更新新数数据据的的结结构构,并并提供了功能强大的面向对象的提供了功能强大的面向对象的DAODAO编程接口。编程接口。(1)(1) VBVB数据库应用程序的组

5、成数据库应用程序的组成nVBVB数据库应用程序包含三部分,如图数据库应用程序包含三部分,如图6.16.1所示。所示。图图6.1 6.1 VBVB数据库应用程序的组成数据库应用程序的组成6 6.1 .1 数据库设计基础数据库设计基础 用户界面用户界面Jet引擎引擎数据库数据库用户界面和应用程序代码用户界面和应用程序代码n用用户户界界面面是是用用户户所所看看见见的的用用于于交交互互的的界界面面,它它包包括括显显示示数数据据并并允允许许用用户户查查看看或或更更新新数数据据的的窗窗体体。驱驱动动这这些些窗窗体体的的是是应应用用程程序序的的VBVB代代码码,包包括括用用来来请请求求数数据据库库服服务务的

6、的数数据据访访问问对对象象和和方方法法,比比如如添添加或删除记录,或执行查询等。加或删除记录,或执行查询等。6 6.1 .1 数据库设计基础数据库设计基础 JetJet引擎引擎nJetJet引擎实际是一组动态链接库引擎实际是一组动态链接库( (DLL)DLL)文件。在运行时,文件。在运行时,这些文件被链接到这些文件被链接到VBVB程序。它把应用程序的请求翻译程序。它把应用程序的请求翻译成成. .mdb(Accessmdb(Access文件后缀文件后缀) )文件或其他数据库的物理操文件或其他数据库的物理操作。作。 nJetJet引擎真正读取、写入和修改数据库,并处理所有引擎真正读取、写入和修改数

7、据库,并处理所有内部事务,如索引、锁定、安全性和引用完整性。内部事务,如索引、锁定、安全性和引用完整性。nJetJet引擎包含一个查询处理器,接收并执行引擎包含一个查询处理器,接收并执行SQLSQL查询,查询,实现所需的数据操作。实现所需的数据操作。nJetJet引擎包含一个结果处理器,用来管理查询所返回引擎包含一个结果处理器,用来管理查询所返回的结果。的结果。6 6.1 .1 数据库设计基础数据库设计基础 数据库数据库n数据库是包含数据库表的一个或多个文件。数据库是包含数据库表的一个或多个文件。n本地本地VBVB或或AccessAccess数据库文件后缀为数据库文件后缀为mdbmdb文件。文

8、件。(2 2)数据库应用程序的存放)数据库应用程序的存放n在单系统机中数据库、数据引擎和用户界面集中存放。在单系统机中数据库、数据引擎和用户界面集中存放。n在在客客户户机机/ /服服务务器器系系统统中中,数数据据库库引引擎擎和和数数据据库库一一起起被被放放置置在在服服务务器器上上。数数据据库库引引擎擎可可以以同同时时对对多多个个客客户户机机的的应应用用程程序序提提供供服服务务、操操作作数数据据库库并并对对每每个个本本地地应应用程序返回所请求的记录。用程序返回所请求的记录。6 6.1 .1 数据库设计基础数据库设计基础 6 6.1 .1 数据库设计基础数据库设计基础 数据库数据库数据库引擎数据库

9、引擎用户界面用户界面服务器服务器客户客户机机客客户户机机服服务务器器引引擎擎,通通过过ODBCODBC方方式式使使用用。在在VBVB中中,通通过过连连接接到到ODBCODBC数数据据源源,如如Microsoft Microsoft SQL SQL ServerServer等等,可可直直接接把把查查询询传递给服务器数据库引擎。传递给服务器数据库引擎。 VBVB中创建和访问数据库的途径主要有中创建和访问数据库的途径主要有3 3个:个:n可视化数据管理器可视化数据管理器 使使用用可可视视化化数数据据管管理理器器,不不需需要要编编程程就就可可以以创创建建JetJet数据库。数据库。nDAO DAO 使

10、用使用VBVB的的DAODAO部件通过编程的方法创建数据库。部件通过编程的方法创建数据库。nISAMISAM或或ODBCODBC VBVB可可通通过过ISAMISAM或或ODBCODBC驱驱动动程程序序来来访访问问外外部部数数据据库库数数据库。据库。6 6.2 .2 本地数据库设计本地数据库设计(ACCESS)(ACCESS)1 1可视化数据管理器可视化数据管理器n数据管理器数据管理器( (Data Manager)Data Manager)是是VBVB的一个传统成员,的一个传统成员,它可以用于快速地建立数据库结构及数据库内容。它可以用于快速地建立数据库结构及数据库内容。n可以完成有关数据库的

11、操作,比如数据库结构的建立、可以完成有关数据库的操作,比如数据库结构的建立、记录的添加及修改以及用记录的添加及修改以及用ODBCODBC连接到服务器端的数据连接到服务器端的数据库如库如SQL ServerSQL Server等。等。n启动数据管理器启动数据管理器 选选择择“外外接接程程序序”菜菜单单下下的的“可可视视化化数数据据管管理理器器”项就可以启动数据管理器,打开项就可以启动数据管理器,打开“VisDataVisData”窗口。窗口。6 6.2 .2 本地数据库设计本地数据库设计(ACCESS)(ACCESS) 2 2)工具栏按钮)工具栏按钮6 6.2 .2 本地数据库设计本地数据库设计

12、(ACCESS)(ACCESS)数据库窗口数据库窗口SQL语句窗口语句窗口显显示示数数据据库库的的结结构构,包包括括表表名名、列列名名、索引索引可可输输入入SQL命命令令,对对数数据据库库中中的的表表进进行行查查询操作询操作VisData窗口 6 6.2 .2 本地数据库设计本地数据库设计(ACCESS)(ACCESS)设设置置记记录录集集的访问方式的访问方式指指定定数数据据表表中中数数据据的的显显示示方方式式进行事务处进行事务处理理6 6.2 .2 本地数据库设计本地数据库设计(ACCESS)(ACCESS)表表类类型型记记录录集集按按钮钮, ,允允许许直直接接对对数数据据库库中中的的数数据

13、据进进行行增增、删删、改改、查等操作。查等操作。动动态态集集类类型型记记录录集集按按钮钮,将将指指定定的的数数据据打打开开并并读读入入到到内内存存中中,进行数据编辑操作。,进行数据编辑操作。快快照照类类型型记记录录集集, ,只只能能读读数数据据不不能能修修改改,适适用用于于只只查查询询的的情况情况6 6.2 .2 本地数据库设计本地数据库设计(ACCESS)(ACCESS)指指定定数数据据表表中中数数据据的的显显示示方方式式,在新窗体上使用在新窗体上使用DATADATA控件控件指指定定数数据据表表中中数数据据的的显显示示方方式式, ,在在新新窗窗体体上上不不使使用用DATADATA控控件件指指

14、定定数数据据表表中中数数据据的的显显示示方方 式式 , ,在在 新新 窗窗 体体 上上 使使 用用DBGridDBGrid控件控件进入进入2 2具体实现具体实现1 1)建立数据库)建立数据库n数据库数据库student.mdbstudent.mdb( (学生数据库学生数据库) )中的表定义:中的表定义: 学生成绩表学生成绩表( (学号,课程,成绩,学期学号,课程,成绩,学期) )。6 6.2 .2 本地数据库设计本地数据库设计(ACCESS)(ACCESS)学生成绩表结构学生成绩表结构字段名字段名 类型类型 宽度宽度 学号学号 Text 6Text 6 课程课程 Text 10Text 10

15、成绩成绩 Long 4Long 4 学期学期 Text 2Text 2基本情况表基本情况表( (学号,姓名,性别,专业,出生年月,学号,姓名,性别,专业,出生年月,照片,备注照片,备注) )6 6.2 .2 本地数据库设计本地数据库设计(ACCESS)(ACCESS) 学生基本情况表结构学生基本情况表结构 字段名字段名 类型类型 宽度宽度 学号学号 Text 6Text 6 姓名姓名 Text 10Text 10 性别性别 Text 2Text 2 专业专业 Text 10Text 10出生年月出生年月 Date 8Date 8 照片照片 Binary 0Binary 0 备注备注 Memo

16、0Memo 0n添加数据表添加数据表n建立索引建立索引 建立索引可以加快检索速度。建立索引可以加快检索速度。2 2)录入数据)录入数据n照片的输入:照片的输入: 静静态态设设置置: :通通过过一一个个图图片片编编辑辑程程序序将将照照片片装装入入剪剪贴贴板板,等待从剪贴板复制到等待从剪贴板复制到Picture1Picture1控件。控件。6 6.3.1 .3.1 数据控件属性数据控件属性n动动态态设设置置: :通通过过Picture1_DblClickPicture1_DblClick事事件件来来完完成成剪剪贴贴板板到到Picture1Picture1控控件件的的复复制制,当当移移动动记记录录指

17、指针针时时,Picture1Picture1控件内的照片存入数据库。控件内的照片存入数据库。 Private Sub Picture1_DblClick() Private Sub Picture1_DblClick() Picture1.Picture = Picture1.Picture = Clipboard.GetDataClipboard.GetData End Sub End Sub3 3)建立查询)建立查询nVBVB的的数数据据管管理理器器提提供供了了一一个个图图形形化化的的设设置置查查询询条条件的窗口件的窗口查询生成器。查询生成器。n例如:查询例如:查询Authors IDAu

18、thors ID= =1010或或Authors IDAuthors ID= =1 1的情况的情况6 6.2 .2 本地数据库设计本地数据库设计(ACCESS)(ACCESS)进入进入nDataData控件数据控件提供有限的不需编程而能访问现存控件数据控件提供有限的不需编程而能访问现存数据库的功能,允许将数据库的功能,允许将Visual BasicVisual Basic的窗体与数据库的窗体与数据库方便地进行连接。方便地进行连接。n使用数据控件获取数据库中记录的集合,先在窗体上使用数据控件获取数据库中记录的集合,先在窗体上画出控件,再通过它的三个基本属性画出控件,再通过它的三个基本属性Conn

19、ectConnect、DatabaseNameDatabaseName和和RecordSourceRecordSource设置要访问的数据资源。设置要访问的数据资源。6 6.3 .3 数据控件数据控件1 1ConnectConnect属性属性nConnectConnect属属性性指指定定数数据据控控件件所所要要连连接接的的数数据据库库类类型型,Visual Visual BasicBasic默默认认的的数数据据库库是是AccessAccess的的MDBMDB文文件件,也也可连接可连接ODBCODBC等类型的数据库。等类型的数据库。nAccessAccess数据库的所有表都包含在一个数据库的所有

20、表都包含在一个MDBMDB文件中。文件中。6 6.3.1 .3.1 数据控件属性数据控件属性2 2DatabaseNameDatabaseName属性属性nDatabaseNameDatabaseName属属性性指指定定具具体体使使用用的的数数据据库库文文件件名名,包包括文件所在的路径名括文件所在的路径名。n数据库中的基本表名可由数据库中的基本表名可由RecordSourceRecordSource属性指定。属性指定。n例例如如,要要连连接接一一个个Microsoft Microsoft AccessAccess的的数数据据库库存存放放在在C:C:Student.mdbStudent.mdb.

21、 .n设设置置DatabaseNameDatabaseName= =”C:C:Student.mdbStudent.mdb“,该该方方法法可可以通过属性栏设置,或在过程中指定以通过属性栏设置,或在过程中指定. .n在过程中可以使用相对路径来描述在过程中可以使用相对路径来描述, , DatabaseNameDatabaseName= =”.Student.mdbStudent.mdb“。6 6.3.1 .3.1 数据控件属性数据控件属性3 3RecordSourceRecordSource属性属性nRecordSourceRecordSource确确 定定 具具 体体 可可 访访 问问 的的 记

22、记 录录 集集 对对 象象RecordsetRecordset。n该该属属性性值值可可以以是是数数据据库库中中的的单单个个表表名名或或者者是是使使用用SQLSQL查询语言的一个查询查询语言的一个查询。 n例如,指定例如,指定Student.mdbStudent.mdb数据库中的基本情况表数据库中的基本情况表: : RecordSourceRecordSource= =”基本情况基本情况”。n例如,访问基本情况表中所有物理系学生的数据。例如,访问基本情况表中所有物理系学生的数据。 RecordSourceRecordSource= =”Select Select From From 基本情况基本

23、情况 Where Where专业专业= =物理物理 ”,6 6.3.1 .3.1 数据控件属性数据控件属性4 4RecordsetTypeRecordsetType属性属性nRecordsetTypeRecordsetType属性确定记录集类型。属性确定记录集类型。(1 1)Table: Table: 表记录集类型表记录集类型,一个记录集(单个表),一个记录集(单个表)(2 2)DynasetDynaset: : 动态集类型动态集类型,一个动态记录集(多个,一个动态记录集(多个表),默认值。表),默认值。(3 3)SnapshotSnapshot:快照类型:快照类型,一个记录集静态副本(不,一

24、个记录集静态副本(不可改)可改)5 5EofActionEofAction和和BofActionBofAction属性属性n当当记记录录指指针针指指向向RecordsetRecordset对对象象的的开开始始( (第第一一个个记记录录前前) )或或 结结 束束 ( (最最 后后 一一 个个 记记 录录 后后 ) )时时 , BofActionBofAction和和EofActionEofAction属属性性的的设设置置或或返返回回值值决决定定了了数数据据控控件件要要采采取的操作。操作属性的取值如表取的操作。操作属性的取值如表6.16.1所示。所示。6 6.3.1 .3.1 数据控件属性数据控件

25、属性6 6.3.1 .3.1 数据控件属性数据控件属性属 性值设置操 作BofAction0vbBOFActionMoveFirst 控件重定位到第1个记录(缺省)1vbBOFActionBOF 移过Recordset的开始位,定位到一个无效记录;将在第一个记录上触发 Data 控件的 Validate 事件,紧跟着是非法 (BOF) 记录上的 Reposition 事件。此刻禁止 Data 控件上的 Move Previous 按钮。 焦点将从一个记录转换到另一焦点将从一个记录转换到另一个记录之前,个记录之前,Validate Validate 事件发生事件发生 该事件发生在某行变为该事件发

26、生在某行变为当前行当前行之后之后 6 6.3.1 .3.1 数据控件属性数据控件属性属 性值设置操 作EofAction0vbEOFActionMoveLast 控件重定位到最后一个记录(缺省)1vbEOFActionEOF 移过Recordset 的结尾,定位到一个无效记录;在最后一个记录上触发 Data控件的Validate事件,紧跟着是在非法 (EOF) 记录上的事件 Reposition .此 刻 禁 止 Data 控 件 上 的 MoveNext 按钮 .2vbEOFActionAddNew 移过最后一个记录,在当前记录上触发 Data 控件的 Validate 事件,紧跟着是自动的

27、 AddNew,向记录集加入新的空记录,接下来是在新记录上的 Reposition 事件,移动记录指针,新记录写入数据库.n与数据控件绑定与数据控件绑定: 数数据据控控件件本本身身不不能能直直接接显显示示记记录录集集中中的的数数据据,必必须须通通过过能能与与它它绑绑定定的的控控件件来来实实现现。可可与与数数据据控控件件绑绑定定的的控控件件对对象象有有文文本本框框、标标签签、图图像像框框、图图形形框框、列列表表框框、组组合合框框、复复选选框框、网网格格、DBDB列列表表框框、DBDB组组合合框框、DBDB网网格和格和OLEOLE容器等控件。容器等控件。n要要使使绑绑定定控控件件能能被被数数据据库

28、库约约束束,必必需需在在设设计计或或运运行行时时对上述控件的两个属性进行设置:对上述控件的两个属性进行设置:nDataSourceDataSource属属性性 该该属属性性通通过过指指定定个个有有效效的的数数据据控控件连接到一个数据库上。件连接到一个数据库上。nDataFieldDataField属属性性 该该属属性性设设置置数数据据库库有有效效的的字字段段与与绑绑定定控件建立联系。控件建立联系。6 6.3.1 .3.1 数据控件属性数据控件属性n当当上上述述控控件件与与数数据据控控件件绑绑定定后后,Visual Visual BasicBasic将将当当前记录的字段值赋给控件。前记录的字段值

29、赋给控件。n数数据据控控件件在在装装入入数数据据库库时时,它它把把记记录录集集的的第第一一个个记记录录作作为为当当前前记记录录。当当数数据据控控件件的的EofActionEofAction属属性性值值设设置置为为2 2时时,当当记记录录指指针针移移过过记记录录集集结结束束位位,数数据据控件会自动向记录集加入新的空记录。控件会自动向记录集加入新的空记录。n绑定控件、数据控件和数据库三者的关系如图下示。绑定控件、数据控件和数据库三者的关系如图下示。6 6.3.1 .3.1 数据控件属性数据控件属性绑定控件绑定控件数据库数据库例例6.2 6.2 设设计计一一个个窗窗体体用用以以显显示示建建立立的的s

30、tudent.mdbstudent.mdb数据库中基本情况表的内容。数据库中基本情况表的内容。n要要显显示示基基本本情情况况表表中中除除了了备备注注字字段段外外的的6 6个个字字段段,故故需需要要用用6 6个个绑绑定定控控件件与与之之对对应应。这这里里用用一一个个图图形形框框显显示照片和示照片和5 5个文本框显示学号、姓名等数据。个文本框显示学号、姓名等数据。6 6.3.1 .3.1 数据控件属性数据控件属性进入进入n数据控件数据控件Data1Data1属性设置属性设置ConnectConnect属性指定为属性指定为AccessAccess类型类型DatabaseNameDatabaseNam

31、e属性连接数据库属性连接数据库Student.mdbStudent.mdbRecordSourceRecordSource属性设置为属性设置为“基本情况基本情况”表。表。n图片框和图片框和5 5个文本框控件属性设置个文本框控件属性设置Text1Text1Text5Text5的的DataSourceDataSource属性设置成属性设置成Data1Data1。Text1Text1Text5Text5的的DataFieldDataField属性分别选择与其对应的属性分别选择与其对应的字段学号、姓名、性别、专业和出生年月。字段学号、姓名、性别、专业和出生年月。Picture1Picture1的的Da

32、taFieldDataField属性选择字段照片属性选择字段照片6 6.3.1 .3.1 数据控件属性数据控件属性进入进入例例6.3 6.3 用用数数据据网网格格控控件件MsFlexGridMsFlexGrid显显示示Student.mdbStudent.mdb数据库中基本情况表的内容。数据库中基本情况表的内容。6 6.3.1 .3.1 数据控件属性数据控件属性进入进入n数数据据网网格格控控件件的的DataSourceDataSource属属性性设设置置为为一一个个DataData控控件件,运运行行时时网网格格控控件件的的列列标标题题会会用用DataData控件的记录集里的数据自动地设置。控件

33、的记录集里的数据自动地设置。nMsFlexGridMsFlexGrid控控件件不不是是Visual Visual BasicBasic工工具具箱箱内内的的默默认认控控件件,需需要要在在开开发发环环境境中中选选择择“工工程程| |部部件件”菜菜单单命命令令,并并在在随随即即出出现现的的对对话话框框中中选选择择“Microsoft Microsoft FlexGridFlexGrid Control Control 6.06.0”选选项项,将其添加到工具箱中。将其添加到工具箱中。6 6.3.1 .3.1 数据控件属性数据控件属性DataSource=Data1FixedCols=0MSFlexGr

34、id1 DatabaseName=”c:student.mdb”RecordsetType=1RecordSource=”基本情况”Data1 其它属性设置默认控件名 表6.4 控件属性n本例所用控件的属性设置如下表所示。本例所用控件的属性设置如下表所示。6 6.3.1 .3.1 数据控件属性数据控件属性注意注意:不可卷动列属性不可卷动列属性FixedCols=0与与FixedCols=1的区别的区别进入进入1 1RepositionReposition事件事件nRepositionReposition事事件件激激活活的的条条件件: :当当记记录录集集指指针针从从一一条条记录移到另一条记录,会

35、产生记录移到另一条记录,会产生RepositionReposition事件。事件。nRepositionReposition事件作用事件作用: :显示当前指针的位置。显示当前指针的位置。6 6.3.2 .3.2 数据控件的事件和常用方法数据控件的事件和常用方法PrivateSubData1_Reposition()Data1.Caption=Data1.Recordset.AbsolutePosition+1EndSubAbsolutePositionAbsolutePosition属属性性指指示示当当前前指指针针值值( (从从0 0开开始始) )。当当单单击击数数据据控控件件对对象象上上的的

36、箭箭头头按按钮钮时,数据控件的标题区会显示记录的序号时,数据控件的标题区会显示记录的序号2.2.ValidateValidate事件事件nValidateValidate事件激活的方法事件激活的方法: :在焦点转换到一个(第二个)在焦点转换到一个(第二个)控件之前发生,此时该控件控件之前发生,此时该控件CausesValidationCausesValidation 属性属性值设置为值设置为TrueTrue。 nValidateValidate事件的作用事件的作用: :用于检查被数据控件绑定控件的用于检查被数据控件绑定控件的状态状态, ,例如例如, ,由一个记录移到另一个记录由一个记录移到另一

37、个记录; ;或者或者焦点由焦点由一个文本框移到另一个文本框一个文本框移到另一个文本框. .6 6.3.2 .3.2 数据控件的事件和常用方法数据控件的事件和常用方法6 6.3.2 .3.2 数据控件的事件和常用方法数据控件的事件和常用方法例例题题: :在在窗窗体体中中放放置置一一个个CommandButtonCommandButton 和和两两个个TextBoxTextBox 控控 件件 , 来来 演演 示示 ValidateValidate 事事 件件 和和CausesValidationCausesValidation 属性的使用。属性的使用。n限限制制条条件件为为: :如如果果 Text

38、1Text1没没有有包包含含日日期期或或 Text2Text2没有包含一个大于没有包含一个大于1010的数字,将阻止焦点的转换。的数字,将阻止焦点的转换。n两两个个TextBoxTextBox 控控件件的的CausesValidatioCausesValidatio n n属属性性在在缺缺省省情情况况为为 TrueTrue,这这样样当当把把焦焦点点从从一一个个TextBoxTextBox转换到另一个时,转换到另一个时,Validate Validate 事件发生。事件发生。进入进入6 6.3.2 .3.2 数据控件的事件和常用方法数据控件的事件和常用方法Private Sub Private

39、Sub Form_LoadForm_Load() () WithWith Command1 Command1 . .CausesValidationCausesValidation = False = False 设置该属性为设置该属性为False,False,当用户单击按钮时,当用户单击按钮时,ValidateValidate事件不发生。事件不发生。 .Caption = Help .Caption = Help End End With With Show Show With Text1 With Text1 选择选择Text1Text1的文本并为它设置焦点。的文本并为它设置焦点。 . .

40、SelLengthSelLength = Len(Text1.Text) = Len(Text1.Text) . .SetFocusSetFocus End With End WithEnd Sub End Sub With 语句可以对某个对象执行一系列的语句,而不用重复指出对象的名称。例如,要改变一个对象的多个属性,可以在 With控制结构中加上属性的赋值语句,这时候只是引用对象一次而不是在每个属性赋值时都要引用它。返回或设置所选择的字符数返回或设置所选择的字符数6 6.3.2 .3.2 数据控件的事件和常用方法数据控件的事件和常用方法Private Sub Command1_Click()

41、 Private Sub Command1_Click() 当单击此按钮时给出用户帮助信息。当单击此按钮时给出用户帮助信息。 MsgBoxMsgBox _ _ Text1 must be set to a date. & Text1 must be set to a date. & VbCrLFVbCrLF & _ & _ Text2 must be a number less than 10.“ Text2 must be a number less than 10.“End SubEnd Sub回车换行回车换行6 6.3.2 .3.2 数据控件的事件和常用方法数据控件的事件和常用方法Pri

42、vate Sub Text1_Validate(KeepFocus As Boolean) Private Sub Text1_Validate(KeepFocus As Boolean) 如如果果值值不不是是一一个个日日期期,则则保保持持焦焦点点,除除非非用用户户单单击击HelpHelp。 If Not IsDate(Text1.Text) Then If Not IsDate(Text1.Text) Then KeepFocusKeepFocus = True = True MsgBoxMsgBox Please Please insert insert a a date date in

43、in this this field., , Text1 field., , Text1 End if End ifEnd Sub End Sub 返回 Boolean 值指明某表达式是否可以转换为日期。 6 6.3.2 .3.2 数据控件的事件和常用方法数据控件的事件和常用方法Private Sub Text2_Validate(KeepFocus As Boolean) Private Sub Text2_Validate(KeepFocus As Boolean) 如果值是一个大于如果值是一个大于1010的数字,保持焦点。的数字,保持焦点。 If Not IsNumeric(Text2.

44、Text) OrIf Not IsNumeric(Text2.Text) Or Val(Text2.Text) 10 Then Val(Text2.Text) 10 Then KeepFocusKeepFocus = True = True MsgBoxMsgBox _Please _Please insert insert a a number number less less than than or or equal to 10., , Text2 equal to 10., , Text2 End If End IfEnd Sub End Sub 返回 Boolean 值指明表达式的值

45、是否为数字。 进入进入6 6.3.2 .3.2 数据控件的事件和常用方法数据控件的事件和常用方法nValidateValidate事件的检查方法事件的检查方法: :通过通过SaveSave参数参数( (TrueTrue或或False)False)判断被连接的数据判断被连接的数据(被绑定的控件被绑定的控件) 是否发生变化。是否发生变化。通过通过ActionAction参数判断哪一种操作触发了参数判断哪一种操作触发了ValidateValidate事件。事件。 6 6.3.2 .3.2 数据控件的事件和常用方法数据控件的事件和常用方法 Validate Validate事件的事件的ActionAc

46、tion参数参数 常常 数数 值值 描描 述述vbDataActionCancelvbDataActionCancel 0 Sub 0 Sub退出时取消操作退出时取消操作vbDataActionMoveFirstvbDataActionMoveFirst 1 1 MoveFirstMoveFirst 方法。方法。vbDataActionMovePreviousvbDataActionMovePrevious 2 2 MovePreviousMovePrevious 方法方法vbDataActionMoveNextvbDataActionMoveNext 3 3 MoveNextMoveNext

47、 方法方法vbDataActionMoveLastvbDataActionMoveLast 4 4 MoveLastMoveLast 方法。方法。vbDataActionAddNewvbDataActionAddNew 5 5 AddNewAddNew 方法方法 6 6.3.2 .3.2 数据控件的事件和常用方法数据控件的事件和常用方法 Validate Validate事件的事件的ActionAction参数参数 常常 数数 值值 描描 述述vbDataActionUpdatevbDataActionUpdate 6 Update 6 Update 操作。操作。vbDataActionDel

48、etevbDataActionDelete 7 Delete 7 Delete 方法方法vbDataActionFindvbDataActionFind 8 Find 8 Find 方法方法vbDataActionBookmarkvbDataActionBookmark 9 Bookmark 9 Bookmark 属性已被设置属性已被设置vbDataActionClosevbDataActionClose 10 Close 10 Close 的方法的方法vbDataActionUnloadvbDataActionUnload 11 11 窗体正在卸载。窗体正在卸载。保保存存对对 Recorde

49、d Recorded 对对象象的的当当前前记记录所做的所有更改。录所做的所有更改。n例例如如,不不允允许许用用户户在在数数据据浏浏览览时时清清空空性性别别数数据据,可可使用下列代码:使用下列代码:6 6.3.2 .3.2 数据控件的事件和常用方法数据控件的事件和常用方法Private Sub Data1_Validate(Action As Integer,_ Private Sub Data1_Validate(Action As Integer,_ Save As Integer)Save As Integer) If Save And Len(Trim(Text3.Text) = 0 T

50、hen If Save And Len(Trim(Text3.Text) = 0 Then Action = 0 Action = 0 取消操作取消操作 MsgBoxMsgBox 性别不能为空!性别不能为空! End If End IfEnd SubEnd Sub 检检查查被被数数据据控控件件绑绑定定的的控控件件Text3Text3内内的的数数据据是是否否被被清清空空。如如果果Text3Text3内内的的数数据据发发生生变变化化,则则SaveSave参参数数返返回回TrueTrue,若若性性别别对对应应的的文文本本框框Text3Text3被被置置空空,则则通通过过Action=0Action=

51、0取消对数据控件的操作取消对数据控件的操作去去除除前前导导空空格格和和末末尾尾空空格格3 3 数据控件的常用方法数据控件的常用方法n数数据据控控件件的的内内置置功功能能很很多多,可可以以在在代代码码中中用用数数据据控控件件的方法访问这些属性。的方法访问这些属性。1 1)RefreshRefresh方法方法n当当RecordSourceRecordSource在在运运行行时时被被改改变变时时,使使用用RefreshRefresh方方法法,将将当当前前指指定定RecordSourceRecordSource中中的的数数据据装装入入内内存存工工作作区区,达到,达到激活数据库激活数据库的作用。的作用。

52、6 6.3.2 .3.2 数据控件的事件和常用方法数据控件的事件和常用方法6 6.3.2 .3.2 数据控件的事件和常用方法数据控件的事件和常用方法Private Sub Private Sub Form_LoadForm_Load( )( ) Dim Dim MpathMpath As String As String MpathMpath= =App.PathApp.Path 获取当前路径获取当前路径 If Right(mpath,1)”/” Then If Right(mpath,1)”/” Then mpathmpath= =mpathmpath+”/”+”/” Data1.Datab

53、aseName= Data1.DatabaseName=mpath+”Student.mdbmpath+”Student.mdb” ” 连接数据库连接数据库 Data1.RecordSource= Data1.RecordSource= 基本情况基本情况” 构成记录集对构成记录集对象象 Data1.Refresh Data1.Refresh 激活数据控件激活数据控件End SubEnd SubAppApp 对对象象是是通通过过关关键键字字 App App 访访问问的的全全局局对对象象。它它指指定定如如下下信信息息:应应用用程程序序的的标标题题、版版本本信信息息、可可执执行行文文件件的的路路径径

54、及及名名称称以以及及是是否否运运行行前前一一个个应应用用程序的示例。程序的示例。PathPath返返回回或或设设置置当当前前路路径径,在在编编程程时时无效,运行时有效。无效,运行时有效。RIGHT(RIGHT(cExpressioncExpression, , nCharactersnCharacters) ) FunctionFunction返回从右边数的返回从右边数的n n个字符。个字符。2 2)UpdateControlsUpdateControls方法方法nUpdateControlsUpdateControls方方法法从从数数据据库库中中重重新新读读数数据据送送到到被被数据控件绑定的

55、控件内。数据控件绑定的控件内。6 6.3.2 .3.2 数据控件的事件和常用方法数据控件的事件和常用方法控件控件DATADATA控件控件数据库数据库控件控件DATADATA控件控件数据库数据库3 3)UpdateRecordUpdateRecord方法方法n对对绑绑定定控控件件内内的的数数据据修修改改后后,数数据据控控件件需需要要移移动动记记录录集集的的指指针针才才能能保保存存修修改改。如如果果使使用用UpdateRecordUpdateRecord方方法法,可可强强制制数数据据控控件件将将绑绑定定控控件件内内的的数数据据写写入入到到数据库中数据库中,而不再触发,而不再触发ValidateVa

56、lidate事件。事件。n记录集记录集RecordsetRecordset常用的属性和方法。常用的属性和方法。1 1AbsolutePositionAbsolutePosition属性属性nAbsolutePositionAbsolutePosition返返回回当当前前指指针针值值,如如果果是是第第1 1条条记录,其值为记录,其值为0 0,该属性为只读属性。,该属性为只读属性。2 2BofBof和和EofEof的属性的属性nBofBof判判定定记记录录指指针针是是否否在在首首记记录录之之前前,若若BofBof为为TrueTrue,则当前位置位于记录集的第则当前位置位于记录集的第1 1条记录之前

57、。条记录之前。nEofEof判判定定记记录录指指针针是是否否在在末末记记录录之之后后,若若EofEof为为TrueTrue,则当前位置位于记录集的最后则当前位置位于记录集的最后1 1条记录之后。条记录之后。6 6.3.3 .3.3 记录集的属性和方法记录集的属性和方法6 6.3.2 .3.2 数据控件的事件和常用方法数据控件的事件和常用方法3 3BookmarkBookmark属性属性nBookmarkBookmark属属性性的的值值采采用用字字符符串串类类型型,用用于于设设置置或或返返回回当当前前指指针针的的标标签签。在在程程序序中中可可以以使使用用BookmarkBookmark属属性重定

58、位记录集的指针。性重定位记录集的指针。4 4NomatchNomatch属性属性n在在记记录录集集中中进进行行查查找找时时,如如果果找找到到相相匹匹配配的的记记录录,则则RecordsetRecordset的的NoMatchNoMatch属属性性为为FalseFalse,否否则则为为TrueTrue。该属性常与该属性常与BookmarkBookmark属性一起使用。属性一起使用。5 5RecordCountRecordCount属性属性nRecordCountRecordCount属性对属性对RecordsetRecordset对象中的对象中的记录计数记录计数,使用使用 RecordCount

59、RecordCount 属性可确定属性可确定 RecordsetRecordset 对象中对象中记录的数目。记录的数目。6 6.3.3 .3.3 记录集的属性和方法记录集的属性和方法6 6MoveMove方法方法 五五种种MoveMove方法是:方法是:nMoveFirstMoveFirst 将控件移动到将控件移动到第第1 1条记录。条记录。nMoveLastMoveLast 将控件移动到将控件移动到最后一条记录。最后一条记录。nMoveNextMoveNext 将控件移动到将控件移动到后一条记录。后一条记录。nMovePreviousMovePrevious 将控件移动到将控件移动到前一条记

60、录。前一条记录。nMove nMove n 向前或向后移向前或向后移n n条记录,条记录,n n为指定的数值。为指定的数值。6 6.3.3 .3.3 记录集的属性和方法记录集的属性和方法例例6.4 6.4 设设计计一一个个窗窗体体用用以以显显示示建建立立的的student.mdbstudent.mdb数数据据库库中中基基本本情情况况表表的的内内容容。在在窗窗体体上上用用4 4个个命命令令按按钮钮实实现对数据库的操作。现对数据库的操作。图图6.10 6.10 用按钮代替数据控件对象的箭头按钮用按钮代替数据控件对象的箭头按钮 6 6.3.3 .3.3 记录集的属性和方法记录集的属性和方法n命命令令

61、按按钮钮Command1_ClickCommand1_Click事事件件移移至至第第1 1条条记记录录,代代码码如下:如下:6 6.3.3 .3.3 记录集的属性和方法记录集的属性和方法n命令按钮命令按钮Command4_ClickCommand4_Click事件移至最后一条记录,事件移至最后一条记录,代码如下:代码如下:Private Sub Command4_Click()Private Sub Command4_Click() Data1.Recordset.MoveLast Data1.Recordset.MoveLastEnd SubEnd SubPrivate Sub Comman

62、d1_Click()Private Sub Command1_Click() Data1.Recordset.MoveFirst Data1.Recordset.MoveFirstEnd SubEnd Subn使使用用MoveMove方方法法需需要要考考虑虑RecordsetRecordset对对象象的的边边界界状状态态。如如果果越越界界,则则用用MoveFirstMoveFirst方方法法定定位位到到第第1 1条条记记录录或或用用MoveLastMoveLast方法定位到最后一条记录。方法定位到最后一条记录。n使用使用MoveFirstMoveFirst方法定位到第方法定位到第1 1条记录:

63、条记录:6 6.3.3 .3.3 记录集的属性和方法记录集的属性和方法Private Sub Command2_Click()Private Sub Command2_Click() Data1.Recordset.MovePrevious Data1.Recordset.MovePrevious If Data1.Recordset.BOF If Data1.Recordset.BOF Then Data1.Recordset.MoveFirst Then Data1.Recordset.MoveFirstEnd SubEnd Subn使用使用MoveLastMoveLast方法定位到最后一

64、条记录:方法定位到最后一条记录:6 6.3.3 .3.3 记录集的属性和方法记录集的属性和方法Private Sub Command3_Click()Private Sub Command3_Click() Data1.Recordset.MoveNext Data1.Recordset.MoveNext If Data1.Recordset.EOF If Data1.Recordset.EOF Then Data1.Recordset.MoveLast Then Data1.Recordset.MoveLastEnd SubEnd Sub7 7FindFind方法方法n使使用用FindFin

65、d方方法法可可在在RecordsetRecordset对对象象中中查查找找与与指指定定条条件件相符的一条记录,并使之成为当前记录。相符的一条记录,并使之成为当前记录。n四四种种FindFind方法是:方法是:nFindFirstFindFirst方方法法 从从记记录录集集的的开开始始查查找找满满足足条条件件的的第第1 1条记录。条记录。nFindLastFindLast方方法法 从从记记录录集集的的尾尾部部向向前前查查找找满满足足条条件件的的第第l l条记录。条记录。nFindNextFindNext方方法法 从从当当前前记记录录开开始始查查找找满满足足条条件件的的下下一一条条记录。记录。nF

66、indPreviousFindPrevious方方法法 从从当当前前记记录录开开始始查查找找满满足足条条件件的的上一条上一条记录。记录。6 6.3.3 .3.3 记录集的属性和方法记录集的属性和方法nFindFind方法的语法格式方法的语法格式: :4 4种格式相同种格式相同 数据集数据集. .FindFind方法方法 条件条件n搜搜索索条条件件表表达达式式: :是是一一个个指指定定字字段段与与常常量量关关系系的的字字符符串串表表达达式式。在在构构造造表表达达式式时时,除除了了用用普普通通的的关关系系运算外,还可以用运算外,还可以用LikeLike运算符。运算符。n例如,查找例如,查找专业专业

67、= =物理的纪录物理的纪录 “Data1.Recordset.FindFirst Data1.Recordset.FindFirst 专专 业业 = =物物 理理”n查找下一条符合条件的记录,可继续使用语句:查找下一条符合条件的记录,可继续使用语句: ”Data1.Recordset.FindNext Data1.Recordset.FindNext 专业专业= =物理物理”。6 6.3.3 .3.3 记录集的属性和方法记录集的属性和方法n例例如如,要要在在记记录录集集内内查查找找专专业业名名称称中中带带有有“建建”字字的专业的专业: : Data1.Recordset.FindFirst D

68、ata1.Recordset.FindFirst 专业专业 Like Like % %建建% %n如如果果FindFind方方法法找找不不到到相相匹匹配配的的记记录录,则则记记录录保保持持在在查找的始发处,查找的始发处,RecordsetRecordset的的NoMatchNoMatch属性为属性为TrueTrue。n如如果果FindFind方方法法找找到到相相匹匹配配的的记记录录,则则记记录录定定位位到到该该记录,记录,RecordsetRecordset的的NoMatchNoMatch属性为属性为FalseFalse。6 6.3.3 .3.3 记录集的属性和方法记录集的属性和方法6 6.3

69、.3 .3.3 记录集的属性和方法记录集的属性和方法Private Sub Command1_Click()Private Sub Command1_Click() Data1.Recordset.FindFirst”course”=EnglishData1.Recordset.FindFirst”course”=English“ If Data1.Recordset.NoMatch Then If Data1.Recordset.NoMatch Then MsgBoxMsgBox ”No such record found” ”No such record found” Else Else

70、MsgBoxMsgBox Data1.Recordset.Fields(“course” )Data1.Recordset.Fields(“course” ) End If End IfEnd SubEnd Sub8 8SeekSeek方法方法nSeekSeek方方法法: :是是根根据据索索引引字字段段的的值值,查查找找与与指指定定索索引引规规则相符的第则相符的第1 1条记录,并使之成为当前记录。条记录,并使之成为当前记录。n其语法格式为:其语法格式为: 数据表对象数据表对象. .seek comparison,keyl,key2seek comparison,keyl,key2n比较运算符比

71、较运算符comparisoncomparison;可用的比较运算符有;可用的比较运算符有 = =、=、 、 、=, 110001Data1.Recordset.Seek =, 110001n数数据据库库记记录录的的增增、删删、改改操操作作需需要要使使用用AddNewAddNew、DeleteDelete、EditEdit、UpdateUpdate和和RefreshRefresh方法。方法。n它们的语法格式为:它们的语法格式为: 数据控件数据控件. .记录集记录集. .方法名方法名1 1增加记录增加记录 调用调用AddNewAddNew方法。方法。 给各字段给各字段赋值赋值。给字段赋值格式为:。

72、给字段赋值格式为: Recordset.FieldsRecordset.Fields( (”字段名字段名”)=)=值。值。 6 6.3.4 .3.4 数据库记录的增删改操作数据库记录的增删改操作 调用调用UpdateUpdate方法,将缓冲区内的数据写入数据库。方法,将缓冲区内的数据写入数据库。 n如如果果使使用用AddNewAddNew方方法法添添加加新新的的记记录录,但但是是没没有有使使用用UpdateUpdate方方法法而而移移动动到到其其他他记记录录,或或者者关关闭闭记记录录集集,那那么所做的输入将全部丢失,而且没有任何警告。么所做的输入将全部丢失,而且没有任何警告。n当当调调用用Up

73、dateUpdate方方法法写写入入记记录录后后,记记录录指指针针自自动动返返回回到到添添加加新新记记录录前前的的位位置置上上,而而不不显显示示新新记记录录。因因此此,需需要要在在调调用用UpdateUpdate方方法法后后,使使用用MoveLastMoveLast方方法法将将记记录录指指针再次移到新记录上。针再次移到新记录上。6.3.4 数据库记录的增删改操作2 2删除记录删除记录 定位被删除的记录使之成为当前记录。定位被删除的记录使之成为当前记录。 调用调用DeleteDelete方法。方法。 移动记录指针。移动记录指针。n在在使使用用DeleteDelete方方法法时时,当当前前记记录录

74、立立即即删删除除,不不加加任任何何的警告或者提示。的警告或者提示。n删删除除一一条条记记录录后后,被被数数据据库库所所约约束束的的绑绑定定控控件件仍仍旧旧显显示示该该记记录录的的内内容容。因因此此,必必须须移移动动记记录录指指针针刷刷新新绑绑定定控件,一般采用移至下一记录的处理方法。控件,一般采用移至下一记录的处理方法。n在移动记录指针后,应该检查在移动记录指针后,应该检查EofEof属性属性6.3.4 数据库记录的增删改操作3 3编辑记录编辑记录n数数据据控控件件自自动动提提供供了了修修改改现现有有记记录录的的能能力力,当当直直接接改改变变被被数数据据库库所所约约束束的的绑绑定定控控件件的的

75、内内容容后后,需需单单击击数数据据控控件件对对象象的的任任一一箭箭头头按按钮钮来来改改变变当当前前记记录录,确确定定所所做做的修改。的修改。n使用程序代码修改当前记录步骤的为:使用程序代码修改当前记录步骤的为: 调用调用EditEdit方法。方法。 给各字段赋值。给各字段赋值。 调用调用UpdateUpdate方法,确定所做的修改。方法,确定所做的修改。n如如果果要要放放弃弃对对数数据据的的所所有有修修改改,可可用用updatecontrolsupdatecontrols方方法法,重重读读数数据据库库的的数数据据,没没有有调调用用UpdateUpdate方方法法,数数据据的的修修改改没没有有写

76、写入入数数据据库库,所所以以这这样样的的记记录录会会在在刷刷新新记录集时丢失。记录集时丢失。6.3.4 数据库记录的增删改操作图图6.11 6.11 编程建立增、删、改、查功能编程建立增、删、改、查功能n例例6.5设计一个窗体用以显示建立的设计一个窗体用以显示建立的student.mdb数数据库中基本情况表的内容。并加入据库中基本情况表的内容。并加入“新增新增”、“删删除除”、“修改修改”、“放弃放弃”和和“查找查找”钮,通过对钮,通过对5个按纽的编程建立增、删、改、查功能。个按纽的编程建立增、删、改、查功能。6.3.4 数据库记录的增删改操作进入进入nCommand1_ClickComman

77、d1_Click事件的功能:事件的功能:n当当按按钮钮提提示示为为“新新增增”时时调调用用AddNewAddNew方方法法,并并将将提提示示文文字字改改为为“确确认认”,同同时时使使“删删除除”按按钮钮Command2Command2、“修修改改”按按钮钮Command3Command3和和“查查找找”按按钮钮Command5Command5不不可可用用,而而使使“放放弃弃”按按钮钮Command4Command4可用。可用。n新新增增记记录录后后,需需再再次次单单击击Command1Command1调调用用UpdateUpdate方方法法确确认认添添加加的的记记录录,再再将将提提示示文文字字

78、改改为为“新新增增”,并并使使“删删除除”、“修修改改”和和“查查找找”按按钮钮可可用用,而使而使“放弃放弃”按钮不可用。按钮不可用。nOn On Error Error Resume Resume NextNext语语句句表表示示在在程程序序运运行行时时发发生生错误,忽略错误行,继续执行下一语句。错误,忽略错误行,继续执行下一语句。6.3.4 数据库记录的增删改操作 6.3.4 数据库记录的增删改操作Private Sub Command1_Click()Private Sub Command1_Click() On Error Resume Next On Error Resume Nex

79、t。 Command2.Enabled = Not Command2.Enabled Command2.Enabled = Not Command2.Enabled Command3.Enabled = Not Command3.Enabled Command3.Enabled = Not Command3.Enabled Command4.Enabled = Not Command4.Enabled Command4.Enabled = Not Command4.Enabled Command5.Enabled = Not Command5.Enabled Command5.Enabled

80、= Not Command5.Enabled 6.3.4 数据库记录的增删改操作If Command1.Caption = If Command1.Caption = 新增新增 ThenThen Command1.Caption = “ Command1.Caption = “确认确认” Data1.Recordset.AddNewData1.Recordset.AddNew Text1.SetFocus Text1.SetFocus Else Else Command1.Caption = Command1.Caption = 新增新增 Data1.Recordset.UpdateData1

81、.Recordset.Update Data1.Recordset.MoveLast Data1.Recordset.MoveLast End If End IfEnd SubEnd Subn命令按钮命令按钮Command2_ClickCommand2_Click事件功能:事件功能: 调调用用方方法法删删除除当当前前记记录录。当当记记录录集集中中的的记记录录全全部部被被删删除除后后,再再执执行行MoveMove语语句句将将发发生生错错误误,这这时时由由On On Error Resume NextError Resume Next语句处理错误。语句处理错误。 6.3.4 数据库记录的增删改操作

82、Private Sub Command2_Click()Private Sub Command2_Click() On Error Resume NextOn Error Resume Next Data1.Recordset.Delete Data1.Recordset.Delete Data1.Recordset.MoveNext Data1.Recordset.MoveNext If Data1.Recordset.EOF If Data1.Recordset.EOF Then Data1.Recordset.MoveLast Then Data1.Recordset.MoveLast

83、End SubEnd Subn命令按钮命令按钮Command3_ClickCommand3_Click事件的功能:事件的功能: 根根据据按按钮钮提提示示文文字字调调用用EditEdit方方法法进进入入编编辑辑状状态态或或调调用用UpdateUpdate方方法法将将修修改改后后的的数数据据写写入入到到数数据据库库,并并控控制制其其他他3 3个按钮的可用性,代码如下:个按钮的可用性,代码如下: 6.3.4 数据库记录的增删改操作Private Sub Command3_Click()Private Sub Command3_Click() On Error Resume Next On Error

84、 Resume Next Command1.Enabled = Not Command1.Enabled Command1.Enabled = Not Command1.Enabled Command2.Enabled = Not Command2.Enabled Command2.Enabled = Not Command2.Enabled Command4.Enabled = Not Command4.Enabled Command4.Enabled = Not Command4.Enabled Command5.Enabled = Not Command5.Enabled Command

85、5.Enabled = Not Command5.Enabled 6.3.4 数据库记录的增删改操作If Command3.Caption = If Command3.Caption = 修改修改 ThenThen Command3.Caption = Command3.Caption = 确认确认 Data1.Recordset.EditData1.Recordset.Edit Text1.SetFocus Text1.SetFocus Else Else Command3.Caption = Command3.Caption = 修改修改 Data1.Recordset.UpdateDat

86、a1.Recordset.Update End If End IfEnd SubEnd Subn命令按钮命令按钮Command4_ClickCommand4_Click事件的功能:事件的功能: 使用使用UpdateControlsUpdateControls方法放弃操作,代码如下:方法放弃操作,代码如下:6.3.4 数据库记录的增删改操作Private Sub Command4_Click()Private Sub Command4_Click() On Error Resume Next On Error Resume Next Command1.Caption = Command1.Cap

87、tion = 新增新增 Command3.Caption = Command3.Caption = 修改修改 6.3.4 数据库记录的增删改操作 Command1.Enabled = True Command1.Enabled = True Command2.Enabled = True Command2.Enabled = True Command3.Enabled = True Command3.Enabled = True Command4.Enabled =false Command4.Enabled =false Command5.Enabled = True Command5.En

88、abled = True Data1.UpdateControls Data1.UpdateControls Dala1.Recordset.MoveNextDala1.Recordset.MoveNextEnd SubEnd Subn命令按钮命令按钮Command5_ClickCommand5_Click事件的功能:事件的功能: 根据输入专业使用根据输入专业使用SQLSQL语句查找记录,代码如下:语句查找记录,代码如下:6.3.4 数据库记录的增删改操作Private Sub Command5_Click()Private Sub Command5_Click()Dim Dim mzymzy

89、 As String As String mzymzy = = InputBoxInputBox$($(请输入专业请输入专业, , 查找窗查找窗) Data1.RecordSource = Select * From Data1.RecordSource = Select * From 基本情况基本情况_ _ Where Where 专业专业 = & = & mzymzy & & Data1.Refresh Data1.Refreshn上面的代码给出了数据表内数据处理的基本方法上面的代码给出了数据表内数据处理的基本方法6.3.4 数据库记录的增删改操作If Data1.Recordset.EO

90、F ThenIf Data1.Recordset.EOF Then MsgBoxMsgBox 无此专业无此专业!, , !, , 提示提示 Data1.RecordSource = “Data1.RecordSource = “基本情况基本情况” ” Data1.RefreshData1.Refresh End If End IfEnd Sub End Sub n使用使用Data1_ValidateData1_Validate事件过滤无效记录事件过滤无效记录例如,对学号字段进行测试,如果学号为空则输入例如,对学号字段进行测试,如果学号为空则输入无效。在例无效。在例6.56.5中被学号字段所约束

91、的绑定控件是中被学号字段所约束的绑定控件是Text1Text1,可用可用Text1.DataChangedText1.DataChanged属性检测属性检测Text1Text1控件控件所对应的当前记录中的字段值的内容是否发生了变所对应的当前记录中的字段值的内容是否发生了变化,化,Action=6Action=6表示表示UpdateUpdate操作。操作。使用数据控件的箭头按钮改变当前记录,则完成添使用数据控件的箭头按钮改变当前记录,则完成添加的新记录或对已有记录的修改的任务。加的新记录或对已有记录的修改的任务。而单击数据控件的箭头按钮时会触发而单击数据控件的箭头按钮时会触发ValidateVa

92、lidate事件,事件,在该事件中,可以根据在该事件中,可以根据ActionAction取值(取值(1 1 4 4)来)来判断单判断单击了数据控件哪一个箭头按钮。击了数据控件哪一个箭头按钮。6.3.4 数据库记录的增删改操作6.3.4 数据库记录的增删改操作Private Sub Data1_Validate(Action As Integer, Private Sub Data1_Validate(Action As Integer, Save As Integer)Save As Integer) If Text1.Text = And _ If Text1.Text = And _ (A

93、ction = 6 Or Text1.DataChanged) (Action = 6 Or Text1.DataChanged) Action=6 Action=6表示表示UpdateUpdate操作操作 Then Then MsgBoxMsgBox 数据不完整,必须要有学号数据不完整,必须要有学号! Data1.UpdateControls Data1.UpdateControls 读回原数据读回原数据 End If End If 6.3.4 数据库记录的增删改操作 If Action = 1 And Action = 1 And Action = 4 Then Command1.Capt

94、ion = Command1.Caption = 新增新增 Command3.Caption = Command3.Caption = 修改修改 Command1.Enabled = TrueCommand1.Enabled = True Command2.Enabled = True Command2.Enabled = True Command3.Enabled = True Command3.Enabled = True Command4.Enabled = False Command4.Enabled = False End If End IfEnd SubEnd SubMoveFir

95、st MoveLast进入进入1 1 ODBC ODBC概述概述n存在问题存在问题 使用数据库系统所提供的专用开发工具使用数据库系统所提供的专用开发工具( (如嵌入式如嵌入式SQLSQL语言语言) ),开发的应用程序只能运行在特定的数据,开发的应用程序只能运行在特定的数据库系统环境下,库系统环境下,适应性和可移植性比较差适应性和可移植性比较差。 使用数据库系统所提供的嵌入式使用数据库系统所提供的嵌入式SQLSQL语言,一个应语言,一个应用程序用程序只能连接同类的只能连接同类的DBMSDBMS,而无法同时访问多个而无法同时访问多个不同的不同的DBMSDBMS;在实际应用中通常是需要同时访问多;在

96、实际应用中通常是需要同时访问多个不同的个不同的DBMSDBMS。这种情况下传统的数据库应用程序这种情况下传统的数据库应用程序开发方法就难以实现。开发方法就难以实现。n为了解决这些问题,为了解决这些问题,MicrosoftMicrosoft公司开发了公司开发了ODBCODBC。6 6.4 ODBC.4 ODBCnODBC(OpenODBC(Open DataBaseDataBase Connectivity Connectivity,即开放数据即开放数据库互连库互连) )是是MicrosoftMicrosoft公司开发的一套开放数据库系公司开发的一套开放数据库系统应用程序接口规范,目前它已成为一

97、种工业标准,统应用程序接口规范,目前它已成为一种工业标准,它它提供了统一的数据库应用编程接口提供了统一的数据库应用编程接口( (API)API),为应为应用程序提供了一套高层调用接口规范和基于动态连用程序提供了一套高层调用接口规范和基于动态连接库的运行支持环境。接库的运行支持环境。n使用使用ODBCODBC开发数据库应用时,开发数据库应用时,应用程序调用的是标应用程序调用的是标准的准的ODBCODBC函数和函数和SQLSQL语句,数据库底层操作由各个语句,数据库底层操作由各个数据库的驱动程序完成。数据库的驱动程序完成。因此应用程序因此应用程序有很好的适有很好的适应性和可移植性应性和可移植性,并

98、且,并且具备了同时访问多种数据库具备了同时访问多种数据库管理系统的能力管理系统的能力,从而彻底克服了传统数据库应用,从而彻底克服了传统数据库应用程序的缺陷。程序的缺陷。6.4 ODBC图图6.12 6.12 ODBCODBC的体系结构的体系结构 2ODBC体系结构体系结构6.4 ODBCODBCODBC数据库应用程序数据库应用程序驱动程序管理器驱动程序管理器SQLServerSQLServer驱动程序驱动程序OracleOracle驱动程序驱动程序FoxproFoxpro驱动程序驱动程序SybaseSybase驱动程序驱动程序SQLServerSQLServer数据源数据源OracleOrac

99、le数据源数据源FoxproFoxpro数据源数据源SybaseSybase数据源数据源DBDBDBDBDBDBDBDB主要任务包括:建立与数据源的连接主要任务包括:建立与数据源的连接、向数据源发送、向数据源发送SQLSQL请求、接收并处理请求、接收并处理请求的结果、断开与数据源的连接等请求的结果、断开与数据源的连接等主要作用是用来装载主要作用是用来装载ODBCODBC驱动驱动程序、管理数据源、检查程序、管理数据源、检查ODBCODBC参数的合法性参数的合法性6.4 ODBCODBCODBC数据库应用程序数据库应用程序驱动程序管理器驱动程序管理器SQLServerSQLServer驱动程序驱动

100、程序OracleOracle驱动程序驱动程序FoxproFoxpro驱动程序驱动程序SybaseSybase驱动程序驱动程序SQLServerSQLServer数据源数据源OracleOracle数据源数据源FoxproFoxpro数据源数据源SybaseSybase数据源数据源DBDBDBDBDBDBDBDBODBCODBC应用程序不能直接存取数据库,它将所应用程序不能直接存取数据库,它将所要执行的操作提交给数据库驱动程序,要执行的操作提交给数据库驱动程序,通过针对不通过针对不同数据源的同数据源的驱动程序实驱动程序实现对不同数现对不同数据源的各种据源的各种操作操作ODBCODBC驱动程序是一

101、个动态链接库驱动程序是一个动态链接库 (DLL)(DLL),类似于类似于WindowsWindows下的打印驱动程序,对用下的打印驱动程序,对用户来说,驱动程序屏蔽了不同对象户来说,驱动程序屏蔽了不同对象( (数据数据库系统或打印机库系统或打印机) )间的差异。同样地,间的差异。同样地,ODBCODBC屏蔽了屏蔽了DBMSDBMS之间的差异。之间的差异。6.4 ODBCODBCODBC数据库应用程序数据库应用程序驱动程序管理器驱动程序管理器SQLServerSQLServer驱动程序驱动程序OracleOracle驱动程序驱动程序FoxproFoxpro驱动程序驱动程序SybaseSybase

102、驱动程序驱动程序SQLServerSQLServer数据源数据源OracleOracle数据源数据源FoxproFoxpro数据源数据源SybaseSybase数据源数据源DBDBDBDBDBDBDBDB数据库操作数据库操作结果也通过结果也通过驱动程序返驱动程序返回给应用程回给应用程序。序。数据源数据源n数数据据源源( (Data Data Source Source NameName,简简称称DSN)DSN)是是指指任任一一种种可可以以通通过过ODBCODBC连连接接的的数数据据库库管管理理系系统统,它它包包括括要要访访问问的数据库和数据库的运行平台的数据库和数据库的运行平台。n数数据据源源

103、名名表表达达了了一一个个ODBCODBC驱驱动动程程序序和和DBMSDBMS的的特特定定连连接接。例例如如,建建立立一一个个数数据据源源名名为为Studend1Studend1,并并设设置置Studend1=Studend1=Studend.mdbStudend.mdb。使使用用Studend1Studend1的的用用户户可可以以由文件指定、本机使用或用户使用三种。由文件指定、本机使用或用户使用三种。n通通过过定定义义多多个个数数据据源源名名,每每个个数数据据源源名名指指向向一一个个数数据据库库服服务务器器上上的的DBMSDBMS名名,在在应应用用程程序序中中使使用用不不同同的的数据源名,可以

104、数据源名,可以实现同时访问多个实现同时访问多个DBMSDBMS的目的的目的。6.4 ODBCn数数据据源源分分为为以以下下三三类类, ,可可以以通通过过控控制制面面板板中中ODBCODBC图图标标来设置来设置: n用户数据源用户数据源 用用户户创创建建的的数数据据源源,称称为为“用用户户数数据据源源”。此此时时只只有有创创建建者者才才能能使使用用,并并且且只只能能在在所所定定义义的的机机器器上上运运行行。任何用户都不能使用其他用户创建的用户数据源。任何用户都不能使用其他用户创建的用户数据源。n系统数据源系统数据源 所所有有用用户户和和在在Windows Windows NTNT下下以以服服务务

105、方方式式运运行行的的应应用用程序程序均可使用系统数据源均可使用系统数据源。n文件数据源文件数据源 文文件件数数据据源源可可用用于于企企业业用用户户,ODBCODBC驱驱动动程程序序安安装装在在用户的计算机上。用户的计算机上。6.4 ODBCnODBCODBC提提供供了了一一个个开开放放的的、标标准准的的能能访访问问从从PCPC机机、小小型型机机到到大大型型机机数数据据库库数数据据的的接接口口。 ODBCODBC提提供供了了在在不不同同数数据据库库环环境境中中为为客客户户机机/ /服服务务器器(简简称称C CS S)结结构构的的客户机访问异构数据库的接口。客户机访问异构数据库的接口。n使使用用O

106、DBCODBC标标准准接接口口的的应应用用程程序序,开开发发者者可可以以不不必必深深入入了了解解要要访访问问的的数数据据库库系系统统,比比如如其其支支持持的的操操作作和和数数据据类类型型等等信信息息,而而只只需需掌掌握握通通用用的的ODBC ODBC APIAPI编编程程方方法法即即可。可。n利利用用ODBCODBC开开发发的的数数据据库库应应用用程程序序具具有有很很好好的的移移植植性性,当当作作为为数数据据库库源源的的数数据据库库服服务务器器上上的的数数据据库库管管理理系系统统升升级级或或转转换换到到不不同同的的数数据据库库管管理理系系统统时时,客客户户机机端端应应用程序不需作任何改变。用程序不需作任何改变。 6.4 ODBC

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 工作计划

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