VB数据库编程技术.ppt
第第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中的数据访问中的数据访问nVBVB提供的数据库引擎叫提供的数据库引擎叫JetJet。nVBVB提供了两种与提供了两种与JetJet数据库引擎接口的方法:数据库引擎接口的方法:DataData控控件件(Data Data Control)Control)和和数数据据访访问问对对象象(DAO)DAO)。这两种方法可以同时使用。这两种方法可以同时使用。6 6.1.1 数据库设计基础数据库设计基础 DataData控件提供了有限的控件提供了有限的不需编程就能访问现存不需编程就能访问现存数据库的功能数据库的功能DAODAO模型是全面控制模型是全面控制数据库的完整编程接口数据库的完整编程接口nVBVB通过通过DAODAO、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.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数据库应用程序的组成数据库应用程序的组成nVBVB数据库应用程序包含三部分,如图数据库应用程序包含三部分,如图6.16.1所示。所示。图图6.1 6.1 VBVB数据库应用程序的组成数据库应用程序的组成6 6.1.1 数据库设计基础数据库设计基础 用户界面用户界面Jet引擎引擎数据库数据库用户界面和应用程序代码用户界面和应用程序代码n用用户户界界面面是是用用户户所所看看见见的的用用于于交交互互的的界界面面,它它包包括括显显示示数数据据并并允允许许用用户户查查看看或或更更新新数数据据的的窗窗体体。驱驱动动这这些些窗窗体体的的是是应应用用程程序序的的VBVB代代码码,包包括括用用来来请请求求数数据据库库服服务务的的数数据据访访问问对对象象和和方方法法,比比如如添添加或删除记录,或执行查询等。加或删除记录,或执行查询等。6 6.1.1 数据库设计基础数据库设计基础 JetJet引擎引擎nJetJet引擎实际是一组动态链接库引擎实际是一组动态链接库(DLL)DLL)文件。在运行时,文件。在运行时,这些文件被链接到这些文件被链接到VBVB程序。它把应用程序的请求翻译程序。它把应用程序的请求翻译成成.mdb(Accessmdb(Access文件后缀文件后缀)文件或其他数据库的物理操文件或其他数据库的物理操作。作。nJetJet引擎真正读取、写入和修改数据库,并处理所有引擎真正读取、写入和修改数据库,并处理所有内部事务,如索引、锁定、安全性和引用完整性。内部事务,如索引、锁定、安全性和引用完整性。nJetJet引擎包含一个查询处理器,接收并执行引擎包含一个查询处理器,接收并执行SQLSQL查询,查询,实现所需的数据操作。实现所需的数据操作。nJetJet引擎包含一个结果处理器,用来管理查询所返回引擎包含一个结果处理器,用来管理查询所返回的结果。的结果。6 6.1.1 数据库设计基础数据库设计基础 数据库数据库n数据库是包含数据库表的一个或多个文件。数据库是包含数据库表的一个或多个文件。n本地本地VBVB或或AccessAccess数据库文件后缀为数据库文件后缀为mdbmdb文件。文件。(2 2)数据库应用程序的存放)数据库应用程序的存放n在单系统机中数据库、数据引擎和用户界面集中存放。在单系统机中数据库、数据引擎和用户界面集中存放。n在在客客户户机机/服服务务器器系系统统中中,数数据据库库引引擎擎和和数数据据库库一一起起被被放放置置在在服服务务器器上上。数数据据库库引引擎擎可可以以同同时时对对多多个个客客户户机机的的应应用用程程序序提提供供服服务务、操操作作数数据据库库并并对对每每个个本本地地应应用程序返回所请求的记录。用程序返回所请求的记录。6 6.1.1 数据库设计基础数据库设计基础 6 6.1.1 数据库设计基础数据库设计基础 数据库数据库数据库引擎数据库引擎用户界面用户界面服务器服务器客户客户机机客客户户机机服服务务器器引引擎擎,通通过过ODBCODBC方方式式使使用用。在在VBVB中中,通通过过连连接接到到ODBCODBC数数据据源源,如如Microsoft Microsoft SQL SQL ServerServer等等,可可直直接接把把查查询询传递给服务器数据库引擎。传递给服务器数据库引擎。VBVB中创建和访问数据库的途径主要有中创建和访问数据库的途径主要有3 3个:个:n可视化数据管理器可视化数据管理器 使使用用可可视视化化数数据据管管理理器器,不不需需要要编编程程就就可可以以创创建建JetJet数据库。数据库。nDAO DAO 使用使用VBVB的的DAODAO部件通过编程的方法创建数据库。部件通过编程的方法创建数据库。nISAMISAM或或ODBCODBC VBVB可可通通过过ISAMISAM或或ODBCODBC驱驱动动程程序序来来访访问问外外部部数数据据库库数数据库。据库。6 6.2.2 本地数据库设计本地数据库设计(ACCESS)(ACCESS)1 1可视化数据管理器可视化数据管理器n数据管理器数据管理器(Data Manager)Data Manager)是是VBVB的一个传统成员,的一个传统成员,它可以用于快速地建立数据库结构及数据库内容。它可以用于快速地建立数据库结构及数据库内容。n可以完成有关数据库的操作,比如数据库结构的建立、可以完成有关数据库的操作,比如数据库结构的建立、记录的添加及修改以及用记录的添加及修改以及用ODBCODBC连接到服务器端的数据连接到服务器端的数据库如库如SQL ServerSQL Server等。等。n启动数据管理器启动数据管理器 选选择择“外外接接程程序序”菜菜单单下下的的“可可视视化化数数据据管管理理器器”项就可以启动数据管理器,打开项就可以启动数据管理器,打开“VisDataVisData”窗口。窗口。6 6.2.2 本地数据库设计本地数据库设计(ACCESS)(ACCESS)2 2)工具栏按钮)工具栏按钮6 6.2.2 本地数据库设计本地数据库设计(ACCESS)(ACCESS)数据库窗口数据库窗口SQL语句窗口语句窗口显显示示数数据据库库的的结结构构,包包括括表表名名、列列名名、索引索引可可输输入入SQL命命令令,对对数数据据库库中中的的表表进进行行查查询操作询操作VisData窗口 6 6.2.2 本地数据库设计本地数据库设计(ACCESS)(ACCESS)设设置置记记录录集集的访问方式的访问方式指指定定数数据据表表中中数数据据的的显显示示方方式式进行事务处进行事务处理理6 6.2.2 本地数据库设计本地数据库设计(ACCESS)(ACCESS)表表类类型型记记录录集集按按钮钮,允允许许直直接接对对数数据据库库中中的的数数据据进进行行增增、删删、改改、查等操作。查等操作。动动态态集集类类型型记记录录集集按按钮钮,将将指指定定的的数数据据打打开开并并读读入入到到内内存存中中,进行数据编辑操作。,进行数据编辑操作。快快照照类类型型记记录录集集,只只能能读读数数据据不不能能修修改改,适适用用于于只只查查询询的的情况情况6 6.2.2 本地数据库设计本地数据库设计(ACCESS)(ACCESS)指指定定数数据据表表中中数数据据的的显显示示方方式式,在新窗体上使用在新窗体上使用DATADATA控件控件指指定定数数据据表表中中数数据据的的显显示示方方式式,在在新新窗窗体体上上不不使使用用DATADATA控控件件指指定定数数据据表表中中数数据据的的显显示示方方 式式,在在 新新 窗窗 体体 上上 使使 用用DBGridDBGrid控件控件进入进入2 2具体实现具体实现1 1)建立数据库)建立数据库n数据库数据库student.mdbstudent.mdb(学生数据库学生数据库)中的表定义:中的表定义:学生成绩表学生成绩表(学号,课程,成绩,学期学号,课程,成绩,学期)。6 6.2.2 本地数据库设计本地数据库设计(ACCESS)(ACCESS)学生成绩表结构学生成绩表结构字段名字段名 类型类型 宽度宽度 学号学号 Text 6Text 6 课程课程 Text 10Text 10 成绩成绩 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 0Memo 0n添加数据表添加数据表n建立索引建立索引 建立索引可以加快检索速度。建立索引可以加快检索速度。2 2)录入数据)录入数据n照片的输入:照片的输入:静静态态设设置置:通通过过一一个个图图片片编编辑辑程程序序将将照照片片装装入入剪剪贴贴板板,等待从剪贴板复制到等待从剪贴板复制到Picture1Picture1控件。控件。6 6.3.1.3.1 数据控件属性数据控件属性n动动态态设设置置:通通过过Picture1_DblClickPicture1_DblClick事事件件来来完完成成剪剪贴贴板板到到Picture1Picture1控控件件的的复复制制,当当移移动动记记录录指指针针时时,Picture1Picture1控件内的照片存入数据库。控件内的照片存入数据库。Private Sub Picture1_DblClick()Private Sub Picture1_DblClick()Picture1.Picture=Picture1.Picture=Clipboard.GetDataClipboard.GetData End Sub End Sub3 3)建立查询)建立查询nVBVB的的数数据据管管理理器器提提供供了了一一个个图图形形化化的的设设置置查查询询条条件的窗口件的窗口查询生成器。查询生成器。n例如:查询例如:查询Authors IDAuthors ID=1010或或Authors IDAuthors ID=1 1的情况的情况6 6.2.2 本地数据库设计本地数据库设计(ACCESS)(ACCESS)进入进入nDataData控件数据控件提供有限的不需编程而能访问现存控件数据控件提供有限的不需编程而能访问现存数据库的功能,允许将数据库的功能,允许将Visual BasicVisual Basic的窗体与数据库的窗体与数据库方便地进行连接。方便地进行连接。n使用数据控件获取数据库中记录的集合,先在窗体上使用数据控件获取数据库中记录的集合,先在窗体上画出控件,再通过它的三个基本属性画出控件,再通过它的三个基本属性ConnectConnect、DatabaseNameDatabaseName和和RecordSourceRecordSource设置要访问的数据资源。设置要访问的数据资源。6 6.3.3 数据控件数据控件1 1ConnectConnect属性属性nConnectConnect属属性性指指定定数数据据控控件件所所要要连连接接的的数数据据库库类类型型,Visual Visual BasicBasic默默认认的的数数据据库库是是AccessAccess的的MDBMDB文文件件,也也可连接可连接ODBCODBC等类型的数据库。等类型的数据库。nAccessAccess数据库的所有表都包含在一个数据库的所有表都包含在一个MDBMDB文件中。文件中。6 6.3.1.3.1 数据控件属性数据控件属性2 2DatabaseNameDatabaseName属性属性nDatabaseNameDatabaseName属属性性指指定定具具体体使使用用的的数数据据库库文文件件名名,包包括文件所在的路径名括文件所在的路径名。n数据库中的基本表名可由数据库中的基本表名可由RecordSourceRecordSource属性指定。属性指定。n例例如如,要要连连接接一一个个Microsoft Microsoft AccessAccess的的数数据据库库存存放放在在C:C:Student.mdbStudent.mdb.n设设置置DatabaseNameDatabaseName=”C:C:Student.mdbStudent.mdb“,该该方方法法可可以通过属性栏设置,或在过程中指定以通过属性栏设置,或在过程中指定.n在过程中可以使用相对路径来描述在过程中可以使用相对路径来描述,DatabaseNameDatabaseName=”.Student.mdbStudent.mdb“。6 6.3.1.3.1 数据控件属性数据控件属性3 3RecordSourceRecordSource属性属性nRecordSourceRecordSource确确 定定 具具 体体 可可 访访 问问 的的 记记 录录 集集 对对 象象RecordsetRecordset。n该该属属性性值值可可以以是是数数据据库库中中的的单单个个表表名名或或者者是是使使用用SQLSQL查询语言的一个查询查询语言的一个查询。n例如,指定例如,指定Student.mdbStudent.mdb数据库中的基本情况表数据库中的基本情况表:RecordSourceRecordSource=”基本情况基本情况”。n例如,访问基本情况表中所有物理系学生的数据。例如,访问基本情况表中所有物理系学生的数据。RecordSourceRecordSource=”Select Select From From 基本情况基本情况 Where Where专业专业=物理物理 ”,6 6.3.1.3.1 数据控件属性数据控件属性4 4RecordsetTypeRecordsetType属性属性nRecordsetTypeRecordsetType属性确定记录集类型。属性确定记录集类型。(1 1)Table:Table:表记录集类型表记录集类型,一个记录集(单个表),一个记录集(单个表)(2 2)DynasetDynaset:动态集类型动态集类型,一个动态记录集(多个,一个动态记录集(多个表),默认值。表),默认值。(3 3)SnapshotSnapshot:快照类型:快照类型,一个记录集静态副本(不,一个记录集静态副本(不可改)可改)5 5EofActionEofAction和和BofActionBofAction属性属性n当当记记录录指指针针指指向向RecordsetRecordset对对象象的的开开始始(第第一一个个记记录录前前)或或 结结 束束(最最 后后 一一 个个 记记 录录 后后)时时,BofActionBofAction和和EofActionEofAction属属性性的的设设置置或或返返回回值值决决定定了了数数据据控控件件要要采采取的操作。操作属性的取值如表取的操作。操作属性的取值如表6.16.1所示。所示。6 6.3.1.3.1 数据控件属性数据控件属性6 6.3.1.3.1 数据控件属性数据控件属性属 性值设置操 作BofAction0vbBOFActionMoveFirst 控件重定位到第1个记录(缺省)1vbBOFActionBOF 移过Recordset的开始位,定位到一个无效记录;将在第一个记录上触发 Data 控件的 Validate 事件,紧跟着是非法(BOF)记录上的 Reposition 事件。此刻禁止 Data 控件上的 Move Previous 按钮。焦点将从一个记录转换到另一焦点将从一个记录转换到另一个记录之前,个记录之前,Validate Validate 事件发生事件发生 该事件发生在某行变为该事件发生在某行变为当前行当前行之后之后 6 6.3.1.3.1 数据控件属性数据控件属性属 性值设置操 作EofAction0vbEOFActionMoveLast 控件重定位到最后一个记录(缺省)1vbEOFActionEOF 移过Recordset 的结尾,定位到一个无效记录;在最后一个记录上触发 Data控件的Validate事件,紧跟着是在非法(EOF)记录上的事件 Reposition.此 刻 禁 止 Data 控 件 上 的 MoveNext 按钮.2vbEOFActionAddNew 移过最后一个记录,在当前记录上触发 Data 控件的 Validate 事件,紧跟着是自动的 AddNew,向记录集加入新的空记录,接下来是在新记录上的 Reposition 事件,移动记录指针,新记录写入数据库.n与数据控件绑定与数据控件绑定:数数据据控控件件本本身身不不能能直直接接显显示示记记录录集集中中的的数数据据,必必须须通通过过能能与与它它绑绑定定的的控控件件来来实实现现。可可与与数数据据控控件件绑绑定定的的控控件件对对象象有有文文本本框框、标标签签、图图像像框框、图图形形框框、列列表表框框、组组合合框框、复复选选框框、网网格格、DBDB列列表表框框、DBDB组组合合框框、DBDB网网格和格和OLEOLE容器等控件。容器等控件。n要要使使绑绑定定控控件件能能被被数数据据库库约约束束,必必需需在在设设计计或或运运行行时时对上述控件的两个属性进行设置:对上述控件的两个属性进行设置:nDataSourceDataSource属属性性 该该属属性性通通过过指指定定个个有有效效的的数数据据控控件连接到一个数据库上。件连接到一个数据库上。nDataFieldDataField属属性性 该该属属性性设设置置数数据据库库有有效效的的字字段段与与绑绑定定控件建立联系。控件建立联系。6 6.3.1.3.1 数据控件属性数据控件属性n当当上上述述控控件件与与数数据据控控件件绑绑定定后后,Visual Visual BasicBasic将将当当前记录的字段值赋给控件。前记录的字段值赋给控件。n数数据据控控件件在在装装入入数数据据库库时时,它它把把记记录录集集的的第第一一个个记记录录作作为为当当前前记记录录。当当数数据据控控件件的的EofActionEofAction属属性性值值设设置置为为2 2时时,当当记记录录指指针针移移过过记记录录集集结结束束位位,数数据据控件会自动向记录集加入新的空记录。控件会自动向记录集加入新的空记录。n绑定控件、数据控件和数据库三者的关系如图下示。绑定控件、数据控件和数据库三者的关系如图下示。6 6.3.1.3.1 数据控件属性数据控件属性绑定控件绑定控件数据库数据库例例6.2 6.2 设设计计一一个个窗窗体体用用以以显显示示建建立立的的student.mdbstudent.mdb数据库中基本情况表的内容。数据库中基本情况表的内容。n要要显显示示基基本本情情况况表表中中除除了了备备注注字字段段外外的的6 6个个字字段段,故故需需要要用用6 6个个绑绑定定控控件件与与之之对对应应。这这里里用用一一个个图图形形框框显显示照片和示照片和5 5个文本框显示学号、姓名等数据。个文本框显示学号、姓名等数据。6 6.3.1.3.1 数据控件属性数据控件属性进入进入n数据控件数据控件Data1Data1属性设置属性设置ConnectConnect属性指定为属性指定为AccessAccess类型类型DatabaseNameDatabaseName属性连接数据库属性连接数据库Student.mdbStudent.mdbRecordSourceRecordSource属性设置为属性设置为“基本情况基本情况”表。表。n图片框和图片框和5 5个文本框控件属性设置个文本框控件属性设置Text1Text1Text5Text5的的DataSourceDataSource属性设置成属性设置成Data1Data1。Text1Text1Text5Text5的的DataFieldDataField属性分别选择与其对应的属性分别选择与其对应的字段学号、姓名、性别、专业和出生年月。字段学号、姓名、性别、专业和出生年月。Picture1Picture1的的DataFieldDataField属性选择字段照片属性选择字段照片6 6.3.1.3.1 数据控件属性数据控件属性进入进入例例6.3 6.3 用用数数据据网网格格控控件件MsFlexGridMsFlexGrid显显示示Student.mdbStudent.mdb数据库中基本情况表的内容。数据库中基本情况表的内容。6 6.3.1.3.1 数据控件属性数据控件属性进入进入n数数据据网网格格控控件件的的DataSourceDataSource属属性性设设置置为为一一个个DataData控控件件,运运行行时时网网格格控控件件的的列列标标题题会会用用DataData控件的记录集里的数据自动地设置。控件的记录集里的数据自动地设置。nMsFlexGridMsFlexGrid控控件件不不是是Visual Visual BasicBasic工工具具箱箱内内的的默默认认控控件件,需需要要在在开开发发环环境境中中选选择择“工工程程|部部件件”菜菜单单命命令令,并并在在随随即即出出现现的的对对话话框框中中选选择择“Microsoft Microsoft FlexGridFlexGrid Control Control 6.06.0”选选项项,将其添加到工具箱中。将其添加到工具箱中。6 6.3.1.3.1 数据控件属性数据控件属性DataSource=Data1FixedCols=0MSFlexGrid1 DatabaseName=”c:student.mdb”RecordsetType=1RecordSource=”基本情况”Data1 其它属性设置默认控件名 表6.4 控件属性n本例所用控件的属性设置如下表所示。本例所用控件的属性设置如下表所示。6 6.3.1.3.1 数据控件属性数据控件属性注意注意:不可卷动列属性不可卷动列属性FixedCols=0与与FixedCols=1的区别的区别进入进入1 1RepositionReposition事件事件nRepositionReposition事事件件激激活活的的条条件件:当当记记录录集集指指针针从从一一条条记录移到另一条记录,会产生记录移到另一条记录,会产生RepositionReposition事件。事件。nRepositionReposition事件作用事件作用:显示当前指针的位置。显示当前指针的位置。6 6.3.2.3.2 数据控件的事件和常用方法数据控件的事件和常用方法PrivateSubData1_Reposition()Data1.Caption=Data1.Recordset.AbsolutePosition+1EndSubAbsolutePositionAbsolutePosition属属性性指指示示当当前前指指针针值值(从从0 0开开始始)。当当单单击击数数据据控控件件对对象象上上的的箭箭头头按按钮钮时,数据控件的标题区会显示记录的序号时,数据控件的标题区会显示记录的序号2.2.ValidateValidate事件事件nValidateValidate事件激活的方法事件激活的方法:在焦点转换到一个(第二个)在焦点转换到一个(第二个)控件之前发生,此时该控件控件之前发生,此时该控件CausesValidationCausesValidation 属性属性值设置为值设置为TrueTrue。nValidateValidate事件的作用事件的作用:用于检查被数据控件绑定控件的用于检查被数据控件绑定控件的状态状态,例如例如,由一个记录移到另一个记录由一个记录移到另一个记录;或者或者焦点由焦点由一个文本框移到另一个文本框一个文本框移到另一个文本框.6 6.3.2.3.2 数据控件的事件和常用方法数据控件的事件和常用方法6 6.3.2.3.2 数据控件的事件和常用方法数据控件的事件和常用方法例例题题:在在窗窗体体中中放放置置一一个个CommandButtonCommandButton 和和两两个个TextBoxTextBox 控控 件件,来来 演演 示示 ValidateValidate 事事 件件 和和CausesValidationCausesValidation 属性的使用。属性的使用。n限限制制条条件件为为:如如果果 Text1Text1没没有有包包含含日日期期或或 Text2Text2没有包含一个大于没有包含一个大于1010的数字,将阻止焦点的转换。的数字,将阻止焦点的转换。n两两个个TextBoxTextBox 控控件件的的CausesValidatioCausesValidatio n n属属性性在在缺缺省省情情况况为为 TrueTrue,这这样样当当把把焦焦点点从从一一个个TextBoxTextBox转换到另一个时,转换到另一个时,Validate Validate 事件发生。事件发生。进入进入6 6.3.2.3.2 数据控件的事件和常用方法数据控件的事件和常用方法Private Sub Private 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的文本并为它设置焦点。的文本并为它设置焦点。.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()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 数据控件的事件和常用方法数据控件的事件和常用方法Private 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 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.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 值指明表达式的值是否为数字。进入进入6 6.3.2.3.2 数据控件的事件和常用方法数据控件的事件和常用方法nValidateValidate事件的检查方法事件的检查方法:通过通过SaveSave参数参数(TrueTrue或或False)False)判断被连接的数据判断被连接的数据(被绑定的控件被绑定的控件)是否发生变化。是否发生变化。通过通过ActionAction参数判断哪一种操作触发了参数判断哪一种操作触发了ValidateValidate事件。事件。6 6.3.2.3.2 数据控件的事件和常用方法数据控件的事件和常用方法 Validate Validate事件的事件的ActionAction参数参数 常常 数数 值值 描描 述述vbDataActionCancelvbDataActionCancel 0 Sub 0 Sub退出时取消操作退出时取消操作vbDataActionMoveFirstvbDataActionMoveFirst 1 1 MoveFirstMoveFirst 方法。方法。vbDataActionMovePreviousvbDataActionMovePrevious 2 2 MovePreviousMovePrevious 方法方法vbDataActionMoveNextvbDataActionMoveNext 3 3 MoveNextMoveNext 方法方法vbDataActionMoveLastvbDataActionMoveLast 4 4 MoveLastMoveLast 方法。方法。vbDataActionAddNewvbDataActionAddNew 5 5 AddNewAddNew 方法方法 6 6.3.2.3.2 数据控件的事件和常用方法数据控件的事件和常用方法 Validate Validate事件的事件的ActionAction参数参数 常常 数数 值值 描描 述述vbDataActionUpdatevbDataActionUpdate 6 Update 6 Update 操作。操作。vbDataActionDeletevbDataActionDelete 7 Delete 7 Delete 方法方法vbDataActionFindvbDataActionFind 8 Find 8 Find 方法方法vbDataActionBookmarkvbDataActionBookmark 9 Bookmark 9 Bookmark 属性已被设置属性已被设置vbDataActionClosevbDataActionClose 10 Close 10 Close 的方法的方法vbDataActionUnloadvbDataActionUnload 11 11 窗体正在卸载。窗体正在卸载。保保存存对对 Recorded 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 Then 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=0取消对数据控件的操作取消对数据控件的操作去去除除前前导导空空格格和和末末尾尾空空格格3 3 数据控件的常用方法数据控件的常用方法n数数据据控控件件的的内内置置功功能能很很多多,可可以以在在代代码码中中用用数数据据控控件件的方法访问这些属性。的方法访问这些属性。1 1)RefreshRefresh方法方法n当当RecordSourceRecordSource在在运运行行时时被被改改变变时时,使使用用RefreshRefresh方方法法,将将当当前前指指定定RecordSourceRecordSource中中的的数数据据装装入入内内存存