VB数据库编程技术实例

上传人:1332****573 文档编号:157043669 上传时间:2022-09-28 格式:DOC 页数:21 大小:114KB
收藏 版权申诉 举报 下载
VB数据库编程技术实例_第1页
第1页 / 共21页
VB数据库编程技术实例_第2页
第2页 / 共21页
VB数据库编程技术实例_第3页
第3页 / 共21页
资源描述:

《VB数据库编程技术实例》由会员分享,可在线阅读,更多相关《VB数据库编程技术实例(21页珍藏版)》请在装配图网上搜索。

1、 .wd.VB数据库编程技术一ODBC概述在传统的数据库管理系统中,每个数据库管理系统都有自己的应用程序开发接口(API),为了解决此问题,微软公司开发了ODBC(Open DataBase Connectivity,即开放数据库互连)。ODBC 是一套开放数据库系统应用程序接口标准,目前它已成为一种工业标准,它提供了统一的数据库应用编程接口(API),为应用程序提供了一套高层调用接口标准和基于动态连接库的运行支持环境。使用ODBC开发数据库应用时,应用程序调用的是标准的ODBC函数和SQL语句,屏蔽了DBMS之间的差异,数据库底层操作由各个数据库的驱动程序完成。因此应用程序有很好的适应性和可

2、移植性,并且具备了同时访问多种数据库管理系统的能力,从而彻底抑制了传统数据库应用程序的缺陷。主要任务包括:建设与数据源的连接;向数据源发送SQL请求;断开与数据源的连接数据源数据源是指任一种可以通过ODBC连接的数据库管理系统,它包括要访问的数据库和数据库的运行平台。数据源名掩盖了数据库服务器或数据库文件间的差异,通过定义多个数据源,每个数据源指向一个服务器名,就可在应用程序中实现同时访问多个DBMS的目的。数据源(Data Source Name,简称DSN)是驱动程序与DBS连接的桥梁,数据源不是DBS,而是用于表达一个ODBC驱动程序和DBMS特殊连接的命名。在连接中,用数据源名来代表用

3、户名、服务器名、所连接的数据库名等,可以将数据源名看成是与一个具体数据库建设的连接。数据源分为以下三类: (1)用户数据源:用户创立的数据源,称为“用户数据源。此时只有创立者才能使用,并且只能在所定义的机器上运行。任何用户都不能使用其他用户创立的用户数据源。 (2)系统数据源:所有用户和在Windows NT下以服务方式运行的应用程序均可使用系统数据源。(3)文件数据源:文件数据源是ODBC 3.0以上版本增加的一种数据源,可用于企业用户,ODBC驱动程序也安装在用户的计算机上。与机器无关二、SQL语言根基创立表格 SQL语言中的create table语句被用来建设新的数据库表格。Creat

4、e table语句的使用格式如下:create table tablename(column1 data type,column2 data type, column3 data type);如果用户希望在建设新表格时规定列的限制条件,可以使用可选的条件选项:create table tablename(column1 data type constraint,column2 data type constraint,column3 data type constraint); 举例如下:create table employee(firstname varchar(15),lastname

5、varchar(20),age number(3),address varchar(30),city varchar(20);简单来说,创立新表格时,在关键词create table后面参加所要建设的表格的名称,然后在括号内顺次设定各列的名称,数据类型,以及可选的限制条件等。注意,所有的SQL语句在结尾处都要使用“;符号。使用SQL语句创立的数据库表格和表格中列的名称必须以字母开头,后面可以使用字母,数字或下划线,名称的长度不能超过30个字符。注意,用户在选择表格名称时不要使用SQL语言中的保存关键词,如select, create, insert等,作为表格或列的名称。数据类型用来设定某一个

6、具体列中数据的类型。例如,在姓名列中只能采用varchar或char的数据类型,而不能使用number的数据类型。SQL语言中较为常用的数据类型为:char(size):固定长度字符串,其中括号中的size用来设定字符串的最大长度。Char类型的最大长度为255字节。varchar(size):可变长度字符串,最大长度由size设定。number(size):数字类型,其中数字的最大位数由size设定。Date:日期类型。number(size,d):数字类型,size决定该数字总的最大位数,而d则用于设定该数字在小数点后的位数。最后,在创立新表格时需要注意的一点就是表格中列的限制条件。所谓限

7、制条件就是当向特定列输入数据时所必须遵守的规则。例如,unique这一限制条件要求某一列中不能存在两个值一样的记录,所有记录的值都必须是唯一的。除unique之外,较为常用的列的限制条件还包括not null和primary key等。Not null用来规定表格中某一列的值不能为空。Primary key则为表格中的所有记录规定了唯一的标识符。查询简单的SQL查询只包括选择列表、FROM子句和WHERE子句。它们分别说明所查询列、查询的表或视图、以及搜索条件等。完整构造:Select All/Distinct From,WhereGroup by HavingOrder by Asc/Des

8、c Group by :按列名1的值进展分组,属性值相等的为一个组,如果带Having短句,表示只有满足指定条件的才输出。例如,下面的语句查询testtable表中姓名为“张三的nickname字段和email字段。SELECT nickname,emailFROM testtableWHERE name=张三(一) 选择列表选择列表(select_list)指出所查询列,它可以是一组列名列表、星号、表达式、变量(包括局部变量和全局变量)等构成。1、选择所有列例如,下面语句显示testtable表中所有列的数据:SELECT *FROM testtable2、选择局部列并指定它们的显示次序查询

9、结果集合中数据的排列顺序与选择列表中所指定的列名排列顺序一样。例如:SELECT nickname,emailFROM testtable3、更改列标题在选择列表中,可重新指定列标题。定义格式为:列标题=列名列名 列标题如果指定的列标题不是标准的标识符格式时,应使用引号定界符,例如,以下语句使用汉字显示列标题:SELECT 昵称=nickname,电子邮件=emailFROM testtable4、删除重复行SELECT语句中使用ALL或DISTINCT选项来显示表中符合条件的所有行或删除其中重复的数据行,默认为ALL。使用DISTINCT选项时,对于所有重复的数据行在SELECT返回的结果集

10、合中只保存一行。5、限制返回的行数使用TOP n PERCENT选项限制返回的数据行数,TOP n说明返回n行,而TOP n PERCENT时,说明n是表示一百分数,指定返回的行数等于总行数的百分之几。例如:SELECT TOP 2 *FROM testtableSELECT TOP 20 PERCENT *FROM testtable(二)FROM子句 FROM子句指定SELECT语句查询及与查询相关的表或视图。在FROM子句中最多可指定256个表或视图,它们之间用逗号分隔。在FROM子句同时指定多个表或视图时,如果选择列表中存在同名列,这时应使用对象名限定这些列所属的表或视图。例如在use

11、rtable和citytable表中同时存在cityid列,在查询两个表中的cityid时应使用下面语句格式加以限定:SELECT username,citytable.cityidFROM usertable,citytableWHERE usertable.cityid=citytable.cityid在FROM子句中可用以下两种格式为表或视图指定别名:表名 as 别名表名 别名(二) FROM子句FROM子句指定SELECT语句查询及与查询相关的表或视图。在FROM子句中最多可指定256个表或视图,它们之间用逗号分隔。在FROM子句同时指定多个表或视图时,如果选择列表中存在同名列,这时应

12、使用对象名限定这些列所属的表或视图。例如在usertable和citytable表中同时存在cityid列,在查询两个表中的cityid时应使用下面语句格式加以限定:SELECT username,citytable.cityidFROM usertable,citytableWHERE usertable.cityid=citytable.cityid在FROM子句中可用以下两种格式为表或视图指定别名:表名 as 别名表名 别名例如上面语句可用表的别名格式表示为:SELECT username,b.cityidFROM usertable a,citytable bWHERE a.cityi

13、d=b.cityidSELECT不仅能从表或视图中检索数据,它还能够从其它查询语句所返回的结果集合中查询数据。例如:SELECT a.au_fname+a.au_lnameFROM authors a,titleauthor ta(SELECT title_id,titleFROM titlesWHERE ytd_sales10000) AS tWHERE a.au_id=ta.au_idAND ta.title_id=t.title_id此例中,将SELECT返回的结果集合给予一别名t,然后再从中检索数据。(三) 使用WHERE子句设置查询条件WHERE子句设置查询条件,过滤掉不需要的数据行

14、。例如下面语句查询年龄大于20的数据:SELECT *FROM usertableWHERE age20WHERE子句可包括各种条件运算符:比拟运算符(大小比拟):、=、=、=、!、!=10 AND age=302、列表运算符例:country IN (Germany,China)3、模式匹配符例:常用于模糊查找,它判断列值是否与指定的字符串格式相匹配。可用于char、varchar、text、ntext、datetime和smalldatetime等类型查询。可使用以下通配字符:百分号%:可匹配任意类型和长度的字符,如果是中文,请使用两个百分号即%。下划线_:匹配单个任意字符,它常用来限制表

15、达式的字符长度。方括号:指定一个字符、字符串或范围,要求所匹配对象为它们中的任一个。:其取值也 一样,但它要求所匹配对象为指定字符以外的任一个字符。例如:限制以Publishing结尾,使用LIKE %Publishing限制以A开头:LIKE A%限制以A开头外:LIKE A%4、空值判断符例WHERE age IS NULL5、逻辑运算符:优先级为NOT、AND、OR(四)查询结果排序 使用ORDER BY子句对查询返回的结果按一列或多列排序。ORDER BY子句的语法格式为:ORDER BY column_name ASC|DESC ,n其中ASC表示升序,为默认值,DESC为降序。OR

16、DER BY不能按ntext、text和image数据类型进展排序。例如:SELECT *FROM usertableORDER BY age desc,userid ASC另外,可以根据表达式进展排序。向表格中插入数据SQL语言使用insert语句向数据库表格中插入或添加新的数据行。Insert语句的使用格式如下:insert into tablename(first_column,.last_column)values (first_value,.last_value); 例如:insert into employee(firstname, lastname, age, address,

17、city)values (Li, Ming, 45, No.77 Changan Road, Beijing);简单来说,当向数据库表格中添加新记录时,在关键词insert into后面输入所要添加的表格名称,然后在括号中列出将要添加新值的列的名称。最后,在关键词values的后面按照前面输入的列的顺序对应的输入所有要添加的记录值。更新记录SQL语言使用update语句更新或修改满足规定条件的现有记录。Update语句的格式为:update tablenameset columnname = newvalue , nextcolumn = newvalue2.where columnname

18、OPERATOR value and|or column OPERATOR value;例如:update employeeset age = age+1where first_name= Maryand last_name= Williams;使用update语句时,关键一点就是要设定好用于进展判断的where条件从句。删除记录SQL语言使用delete语句删除数据库表格中的行或记录。Delete语句的格式为:delete from tablenamewhere columnname OPERATOR value and|or column OPERATOR value; 例如:delete

19、 from employeewhere lastname = May;简单来说,当需要删除某一行或某个记录时,在delete from关键词之后输入表格名称,然后在where从句中设定删除记录的判断条件。注意,如果用户在使用delete语句时不设定where从句,则表格中的所有记录将全部被删除。删除数据库表格在SQL语言中使用drop table命令删除某个表格以及该表格中的所有记录。Drop table命令的使用格式为:drop table tablename;例如:drop table employee;如果用户希望将某个数据库表格完全删除,只需要在drop table命令后输入希望删除的

20、表格名称即可。Drop table命令的作用与删除表格中的所有记录不同。删除表格中的全部记录之后,该表格仍然存在,而且表格中列的信息不会改变。而使用drop table命令则会将整个数据库表格的所有信息全部删除。三、数据控件1、 ADO数据控件1.1 ADO对象模型 ADO(ActiveX Data Object)数据访问接口是Microsoft处理数据库信息的最新技术。它是一种ActiveX对象,采用了被称为OLE DB的数据访问模式,是数据访问对象DAO、远程数据对象RDO和开放数据库互连ODBC三种方式的扩展。ADO对象模型定义了个可编程的分层对象集合,主要由三个对象成员Connecti

21、on、Command和Recordset对象,以及几个集合对象Errors、Parameters和Fields等所组成。图9.13示意了这些对象之间的关系。表9.6是对这些对象的分工描述。Connection对象Error对象Error集合Command对象Parameter对象Parameter集合Recordset对象Field对象Field集合图9.13 ADO对象模型表9.6 ADO对象描述对象名描 述Connection连接数据来源Command从数据源获取所需数据的命令信息Recordset所获得的一组记录组成的记录集Error在访问数据时,由数据源所返回的错误信息Paramete

22、r与命令对象有关的参数Field包含了记录集中某个字段的信息要想在程序中使用ADO对象,必须先为当前工程引用ADO的对象库。引用方式是执行“工程菜单的“引用命令,启动引用对话框,在清单中选取“Microsoft ActiveX Data Objects 2.0 Library选项。1.2 使用ADO数据控件 在使用ADO数据控件前,必须先通过“工程|部件菜单命令选择Microsoft ADO Data Control 6.0(OLEDB)选项,将ADO数据控件添加到工具箱。ADO数据控件与Visual Basic的内部Data控件很相似,它允许使用ADO数据控件的 根本属性快速地创立与数据库的

23、连接。1ADO数据控件的 根本属性 (1)ConnectionString属性 ADO控件没有DatabaseName属性,它使用ConnectionString属性与数据库建设连接。该属性包含了用于与数据源建设连接的相关信息,ConnectionString属性带有4个参数,如表9.7所示。(2)RecordSource属性 RecordSource确定具体可访问的数据,这些数据构成记录集对象Recordset。该属性值可以是数据库中的单个表名,一个存储查询,也可以是使用SQL查询语言的一个查询字符串。表9.7 ConnectionString属性参数参数描述Provide指定数据源的名称F

24、ileName指定数据源所对应的文件名RemoteProvide在远程数据服务器翻开一个客户端时所用的数据源名称RemoteServer在远程数据服务器翻开一个主机端时所用的数据源名称 (3)ConnectionTimeout属性用于数据连接的超时设置,假设在指定时间内连接不成功显示超时信息。4MaxRecords属性定义从一个查询中最多能返回的记录数。2. ADO数据控件的方法和事件ADO数据控件的方法和事件与Data控件的方法和事件完全一样。3设置ADO数据控件的属性 下面通过使用ADO数据控件连接Student.mdb数据库来说明ADO数据控件属性的设置。 步骤1:在窗体上放置ADO数据

25、控件,控件名采用默认名“Adodcl。 步骤2:单击ADO控件属性窗口中的ConnectionString属性右边的“按钮,弹出“属性页对话框。在该对话框中允许通过三种不同的方式连接数据源: “使用连接字符串只需要单击“生成按钮,通过选项设置自动产生连接字符串。 “使用Data Link文件表示通过个连接文件来完成。“使用ODBC数据资源名称可以通过下拉式列表框,选择某个创立好的数据源名称(DSN),作为数据来源对远程数据库进展控制。步骤3:采用“使用连接字符串方式连接数据源。单击“生成按钮,翻开“数据链接属性对话框。在“提供者选项卡内选择一个适宜的OLE DB数据源,Student.mdb是

26、Access数据库,选择“Microsoft Jet 3.51 OLE DB Provider选项。然后单击“下步按钮或翻开“连接选项卡,在对话框内指定数据库文件,这里为Student.mdb。为保证连接有效,可单击“连接选项卡右下方的“测试连接按钮,如果测试成功则关闭ConnectionString属性页。 步骤4:单击ADO控件属性窗口中的RecordSource属性右边的“按钮,弹出记录源属性页对话框。 在“命令类型下拉式列表框中选择“2-adCmdTable选项,在“表或存储过程名称下拉式列表框中选择Student.mdb数据库中的“ 根本情况表,关闭记录源属性页。此时,已完成了ADO

27、数据控件的连接工作。由于ADO数据控件是一个ActiveX控件,也可以用鼠标右键单击ADO数据控件,在弹出的快捷菜单中选择“ADODC属性菜单命令,翻开ADO数据控件属性页对话框,一次完成步骤1步骤4的全部设置。1.3 ADO数据控件上新增绑定控件的使用 随着ADO对象模型的引入,Visual Basic 6.0除了保存以往的一些绑定控件外,又提供了一些新的成员来连接不同数据类型的数据。这些新成员主要有DataGrid、DataCombo、DataList、DataReport、MSHFlexGrid、MSChart控件和MonthView等控件。这些新增绑定控件必须使用ADO数据控件进展绑定

28、。 Visual Basic 6.0在绑定控件上不仅对DataSource和DataField属性在连接功能上作了改良,又增加了DataMember与DataFormat属性使数据访问的队列更加完整。DataMember属性允许处理多个数据集,DataFormat属性用于指定数据内容的显示格式。 例9.6 使用ADO数据控件和DataGrid数据网格控件浏览数据库Student.mdb,并使之具有编辑功能。 在窗体上放置ADO数据控件,并按前面介绍的ADO数据控件属性设置过程连接数据库Student.mdb中的 根本情况表。 DataGrid控件允许用户同时浏览或修改多个记录的数据。在使用Da

29、taGrid控件前也必须先通过“工程|部件菜单命令选择“Microsoft DataGrid Control 6.0(OLEDB)选项,将DataGrid控件添加到工具箱,再将DataGrid控件放置到窗体上。设置DataGrid网格控件的DataSource属性为Adodc1,就可将DataGrid1绑定到数据控件Adodc1上。 显示在DataGrid网格内的记录集,可以通过DataGrid控件的AllowAddNew、AllowDelete和AllowUpdate属性设置控制增,删、改操作。 如果要改变DataGrid网格上显示的字段,可用鼠标右键单击DataGrid控件,在弹出的快捷菜

30、单中选择“检索字段选项。Visual Basic提示是否替换现有的网格布局,单击“是按钮就可将表中的字段装载到DataGrid控件中。再次用鼠标右键单击DataGrid控件,在弹出的快捷菜单中选择“编辑选项,进入数据网格字段布局的编辑状态,此时,当鼠标指在字段名上时,鼠标指针变成黑色向下箭头。用鼠标右键单击需要修改的字段名,在弹出的快捷菜单中选择“删除选项,就可从DataGrid控件中删除该字段,也可选择“属性选项修改字段的显示宽度或字段标题。图9.14所示为具有增、删、改功能的数据网格绑定。标有*号的记录行表示允许增加新记录。图9.14 具有增、删、改功能的数据网格绑定2、Data控件 Da

31、ta控件是Visual Basic访问数据库的一种利器,它能够利用三种Recordset对象来访问数据库中的数据,数据控件提供有限的不需编程而能访问现存数据库的功能,允许将Visual Basic的窗体与数据库方便地进展连接。要利用数据控件返回数据库中记录的集合,应先在窗体上画出控件,再通过它的三个 根本属性Connect、DatabaseName和RecordSource设置要访问的数据资源。2.1Data控件属性1Connect属性 Connect属性指定数据控件所要连接的数据库类型,Visual Basic默认的数据库是Access的MDB文件,此外,也可连接DBF、XLS、ODBC等类

32、型的数据库。2DatabaseName属性 DatabaseName属性指定具体使用的数据库文件名,包括所有的路径名。如果连接的是单表数据库,则DatabaseName属性应设置为数据库文件所在的子目录名,而具体文件名放在RecordSource属性中。 例如,要连接一个Microsoft Access的数据库C:Student.mdb,则设置DatabaseName=C:Student.mdb,Access数据库的所有表都包含在一个MDB文件中。如果连接一个FoxPro数据库如C:VB6stu_fox.dbf,则DatabaseName=C:VB6”,RecordSource=stu_fox

33、.dbf,stu_fox数据库只含有一个表。3RecordSource属性RecordSource确定具体可访问的数据,这些数据构成记录集对象Recordset。该属性值可以是数据库中的单个表名,个存储查询,也可以是使用SQL查询语言的一个查询字符串。 例如,要指定Student.mdb数据库中的 根本情况表,则RecordSource= 根本情况。而RecordSource=Select * From 根本情况Where专业=物理 ,则表示要访问 根本情况表中所有物理系学生的数据。4RecordType属性 RecordType属性确定记录集类型。5EofAction和BofAction属性

34、当记录指针指向Recordset对象的开场(第一个记录前)或完毕(最后一个记录后)时,数据控件的EofAction和BofAction属性的设置或返回值决定了数据控件要采取的操作。属性的取值如表9.1所示。表9.1 EofAction和BofAction属性属性取值操作BofAction0控件重定位到第个记录1移过记录集开场位,定位到一个无效记录,触发数据控件对第一个记录的无效事件ValidateEofAction0控件重定位到最后个记录1移过记录集完毕位,定位到一个无效记录,触发数据 控件对最后一个记录的无效事件Validate 2向记录集参加新的空记录,可以对新记录进展编辑,移动记录指针,

35、新记录写入数据库在Visual Basic中,数据控件本身不能直接显示记录集中的数据,必须通过能与它绑定的控件来实现。可与数据控件绑定的控件对象有文本框、标签、图像框、图形框、列表框、组合框、复选框、网格、DB列表框、DB组合框、DB网格和OLE容器等控件。要使绑定控件能被数据库约束,必需在设计或运行时对这些控件的两个属性进展设置:(1)DataSource属性DataSource属性通过指定个有效的数据控件连接到一个数据库上。(2)DataField属性DataField属性设置数据库有效的字段与绑定控件建设联系。绑定控件、数据控件和数据库三者的关系如图9.7所示。绑定控件数据库数据控件图9

36、.7 绑定控件、数据控件和数据库三者的关系 当上述控件与数据控件绑定后,Visual Basic将当前记录的字段值赋给控件。如果修改了绑定控件内的数据,只要移动记录指针,修改后的数据会自动写入数据库。数据控件在装入数据库时,它把记录集的第一个记录作为当前记录。当数据控件的BofAction属性值设置为2时,当记录指针移过记录集完毕位,数据控件会自动向记录集参加新的空记录。例9.1 建设student.mdb数据库,它包含两个表:“ 根本情况表和“学生成绩表。参见表9.2和表9.3。表9.2 学生 根本情况表构造字段名类型宽度学号Text6姓名Text10性别Text2专业Text10出生年月D

37、ate8照片Binary0表9.3 学生成绩表构造字段名类型宽度学号Text6课程Text10成绩Long4学期Text2用可视化数据管理器建设以上设计的数据库及其表,表中数据可自行录入。例9.2 设计一个窗体用以显示建设的student.mdb数据库中 根本情况表的内容。 根本情况表包含了6个字段,故需要用6个绑定控件与之对应。这里用一个图形框显示照片和5个文本框显示学号、姓名等数据。本例中不需要编写任何代码,具体操作步骤如下: (1)参考如图9.8所示窗体,在窗体上放置1个数据控件,一个图形框、5个文本框和5个标签控件。5个标签控件分别给出相关的提示说明。图9.8 显示Student.md

38、b 根本情况表的数据(2)将数据控件Data1的Connect属性指定为Access类型,DatabaseName属性连接数据库Student.mdb,RecordSource属性设置为“ 根本情况表。(3)图形框和5个文本框控件Text1Text5的DataSource属性都设置成Data1。通过单击这些绑定控件的DataField属性上的“按钮,将下拉出 根本情况表所含的全部字段,分别选择与其对应的字段照片、学号、姓名、性别、专业和出生年月,使之建设约束关系。 运行该工程即可出现图9.8所示效果。5个文本框分别显示 根本情况表内的字段:学号、姓名、性别、专业和出生年月的内容,图形框显示每个

39、学生的照片。 使用数据控件对象的4个箭头按钮可遍历整个记录集中的记录。单击最左边的按钮显示第l条记录;单击其旁边的按钮显示上一条记录;单击最右边的按钮显示最后一条记录;单击其旁边的按钮显示下条记录。数据控件除了可以浏览Recordset对象中的记录外,同时还可以编辑数据。如果改变了某个字段的值,只要移动记录,这时所作的改变存入数据库中。Visual Basic 6.0提供了几个比拟复杂的网格控件,几乎不用编写代码就可以实现多条记录数据显示。当把数据网格控件的DataSource属性设置为一个Data控件时,网格控件会被自动地填充,并且其列标题会用Data控件的记录集里的数据自动地设置。2.2

40、data控件与MsFlexGrid控件结合显示数据库中信息例9.3 用数据网格控件MsFlexGrid显示Student.mdb数据库中 根本情况表的内容。MsFlexGrid控件不是Visual Basic工具箱内的默认控件,需要在开发环境中选择“工程|部件菜单命令,并在随即出现的对话框中选择“MicroSoft FlexGrid Control 6.0”选项,将其添加到工具箱中。本例所用控件的属性设置如表9.4所示。请读者自行比拟不可卷动列属性FixedCols=0与FixedCols=1的区别。Form启动后自动显示如图9.9所示窗口。表9.4 控件属性默认控件名其它属性设置Data1D

41、atabaseName=c:student.mdbRecordsetType=0RecordSource= 根本情况MSFlexGrid1DataSource=Data1FixCols=0图9.9使用数据网格控件2.3 数据控件的常用方法 数据控件的内置功能很多,可以在代码中用数据控件的方法访问这些属性。1Refresh方法如果在设计状态没有为翻开数据库控件的有关属性全部赋值,或当RecordSource在运行时被改变后,必须使用数据控件的Refresh方法激活这些变化。在多用户环境下,当其他用户同时访问同一数据库和表时,Refresh方法将使各用户对数据库的操作有效。例如:将例9.2的设计参

42、数改用代码实现,使所连接数据库所在的文件夹可随程序而变化:Private Sub Form_Load( ) Dim mpath As String Mpath=App.Path 获取当前路径 If Right(mpath,1)/ Then mpath=mpath+/ Data1.DatabaseName=mpath+Student.mdb 连接数据库 Data1.RecordSource= 根本情况 构成记录集对象 Data1.Refresh 激活数据控件End Sub2UpdateControls方法UpdateControls方法可以将数据从数据库中重新读到被数据控件绑定的控件内。因而我们

43、可使用UpdateControls方法终止用户对绑定控件内数据的修改。 例如:将代码Data1.UpdateControts放在一个命令按钮的Click事件中,就可以实现对记录修改的功能。3. UpdateRecord方法当对绑定控件内的数据修改后,数据控件需要移动记录集的指针才能保存修改。如果使用UpdateRecord方法,可强制数据控件将绑定控件内的数据写入到数据库中,而不再触发Validate事件。在代码中可以用该方法来确认修改。2.4 记录集的属性与方法 由RecordSource确定的具体可访问的数据构成的记录集Recordset也是一个对象,因而,它和其他对象一样具有属性和方法。

44、下面列出记录集常用的属性和方法。1AbsolutePosition属性AbsolutePosition返回当前指针值,如果是第1条记录,其值为0,该属性为只读属性。2Bof和Eof的属性 Bof判定记录指针是否在首记录之前,假设Bof为True,则当前位置位于记录集的第1条记录之前。与此类似,Eof判定记录指针是否在末记录之后。3Bookmark属性 Bookmark属性的值采用字符串类型,用于设置或返回当前指针的标签。在程序中可以使用Bookmark属性重定位记录集的指针,但不能使用AbsolutePostion属性。4Nomatch属性 在记录集中进展查找时,如果找到相匹配的记录,则Rec

45、ordset的NoMatch属性为False,否则为True。该属性常与Bookmark属性一起使用。5RecordCount属性 RecordCount属性对Recordset对象中的记录计数,该属性为只读属性。在多用户环境下,RecordCount属性值可能不准确,为了获得准确值,在读取RecordCount属性值之前,可使用MoveLast方法将记录指针移至最后一条记录上。6Move方法 使用Move方法可代替对数据控件对象的4个箭头按钮的操作遍历整个记录集。5种Move方法是: (1)MoveFirst方法:移至第1条记录。 (2)MoveLast方法:移至最后一条记录。 (3)Mov

46、eNext方法:移至下一条记录。(4)MovePrevious方法:移至上一条记录。(5)Move n 方法:向前或向后移n条记录,n为指定的数值。例9.4 在窗体上用4个命令按钮代替例9.2数据控件对象的4个箭头按钮的操作。在例9.2的根基上,窗体上增加4个命令按钮,将数据控件的Visible属性设置为False,如图9.10所示。通过对4个命令按钮的编程代替对数据控件对象的4个箭头按钮的操作。图9.10 用按钮代替数据控件对象的箭头按钮命令按钮Command1_Click事件移至第1条记录,代码如下:Private Sub Command1_Click()Data1.Recordset.M

47、oveFirstEnd Sub命令按钮Command4_Click事件移至最后一条记录,代码如下:Private Sub Command4_Click() Data1.Recordset.MoveLastEnd Sub 另外两个按钮的代码需要考虑Recordset对象的边界的首尾,如果越界,则用MoveFirst方法定位到第1条记录或用MoveLast方法定位到最后一条记录。程序代码如下:Private Sub Command2_Click() Data1.Recordset.MovePrevious If Data1.Recordset.BOF Then Data1.Recordset.Mo

48、veFirstEnd SubPrivate Sub Command3_Click() Data1.Recordset.MoveNext If Data1.Recordset.EOF Then Data1.Recordset.MoveLastEnd Sub7Find方法使用Find方法可在指定的Dynaset或Snapshot类型的Recordset对象中查找与指定条件相符的一条记录,并使之成为当前记录。4种Find方法是: (1)FindFirst方法:从记录集的开场查找满足条件的第1条记录。 (2)FindLast方法:从记录集的尾部向前查找满足条件的第l条记录。 (3)FindNext方法

49、:从当前记录开场查找满足条件的下一条记录。 (4)FindPrevious方法:从当前记录开场查找满足条件的上一条记录。4种Find方法的语法格式一样:数据集合.Find方法 条件 搜索条件是一个指定字段与常量关系的字符串表达式。在构造表达式时,除了用普通的关系运算外,还可以用Like运算符。 例如:语句 “Data1.Recordset.FindFirst 专业=物理表示在由Data1数据控件所连接的数据库Student.mdb的记录集内查找专业为“物理的第l条记录。这里,“专业为数据库Student记录集中的字段名,在该字段中存放专业名称信息。要想查找下一条符合条件的记录,可继续使用语句:

50、Data1.Recordset.FindNext 专业=物理。 又例如:要在记录集内查找专业名称中带有“建字的专业: Data1.Recordset.FindFirst 专业 Like *建*字符串“*建*匹配字段专业中带有“建字字样的所有专业名称字符串。 需要指出的是Find方法在找不到相匹配的记录时,当前记录保持在查找的始发处,NoMatch属性为True。如果Find方法找到相匹配的记录,则记录定位到该记录,Recordset的NoMatch属性为False。8Seek方法 使用Seek方法必须翻开表的索引,它在Table表中查找与指定索引规则相符的第1条记录,并使之成为当前记录。其语法

51、格式为: 数据表对象.seek comparison,keyl,key2 Seek允许承受多个参数,第1个是比拟运算符comparison,Seek方法中可用的比拟运算符有=、=、=, 1100012.5 数据库记录的增、删、改操作 Data控件是浏览表格并编辑表格的好工具,但怎么输入新信息或删除现有记录呢?这需要编写几行代码,否则无法在Data控件上完成数据输入。数据库记录的增、删、改操作需要使用AddNew、Delete、Edit、Update和Refresh方法。它们的语法格式为: 数据控件.记录集.方法名1增加记录AddNew方法在记录集中增加新记录。增加记录的步骤为:(1)调用Add

52、New方法。 (2)给各字段赋值。给字段赋值格式为:Recordset.Fields(字段名)=值。 (3)调用Update方法,确定所做的添加,将缓冲区内的数据写入数据库。 注意:如果使用AddNew方法添加新的记录,但是没有使用Update方法而移动到其他记录,或者关闭记录集,那么所做的输入将全部丧失,而且没有任何警告。当调用Update方法写入记录后,记录指针自动返回到添加新记录前的位置上,而不显示新记录。为此,可在调用Update方法后,使用MoveLast方法将记录指针再次移到新记录上。2删除记录要从记录集中删除记录的操作分为三步:(1)定位被删除的记录使之成为当前记录。(2)调用D

53、elete方法。(3)移动记录指针。 注意:在使用Delete方法时,当前记录立即删除,不加任何的警告或者提示。删除一条记录后,被数据库所约束的绑定控件仍旧显示该记录的内容。因此,你必须移动记录指针刷新绑定控件,般采用移至下一记录的处理方法。在移动记录指针后,应该检查Eof属性。3编辑记录 数据控件自动提供了修改现有记录的能力,当直接改变被数据库所约束的绑定控件的内容后,需单击数据控件对象的任一箭头按钮来改变当前记录,确定所做的修改。也可通过程序代码来修改记录,使用程序代码修改当前记录的步骤为: (1)调用Edit方法。 (2)给各字段赋值。 (3)调用Update方法,确定所做的修改。 注意

54、:如果要放弃对数据的所有修改,可用Refresh方法,重读数据库,没有调用Update方法,数据的修改没有写入数据库,所以这样的记录会在刷新记录集时丧失。例9.5 在例9.2的根基上参加“新增、“删除、“修改、“放弃和“查找钮,通过对5个按纽的编程建设增、删、改、查功能,如图9.11所示。图9.11 编程建设增、删、改、查功能 Command1_Click事件的功能根据按钮提示文字调用AddNew方法或Update方法,并且控制具他4个按钮的可用性。当按钮提示为“新增时调用AddNew方法,并将提示文字改为“确认,同时使“删除按钮Command2、“修改按钮Command3和“查找按钮Comm

55、and5不可用,而使“放弃按钮Command4可用。新增记录后,需再次单击Command1调用Update方法确认添加的记录,再将提示文字再改为“新增,并使“删除、“修改和“查找按钮可用,而使“放弃按钮不可用。程序中出现的On Error Resume Next语句是Visual Basic提供的错误捕获语句。该语句表示在程序运行时发生错误,忽略错误行,继续执行下一语句。Private Sub Command1_Click() On Error Resume Next Command2.Enabled = Not Command2.Enabled Command3.Enabled = Not

56、Command3.Enabled Command4.Enabled = Not Command4.Enabled Command5.Enabled = Not Command5.Enabled If Command1.Caption = 新增 Then Command1.Caption = 确认 Data1.Recordset.AddNew Text1.SetFocus Else Command1.Caption = 新增 Data1.Recordset.Update Data1.Recordset.MoveLast End IfEnd Sub 命令按钮Command2_Click事件调用方法

57、删除当前记录。当记录集中的记录全部被删除后,再执行Move语句将发生错误,这时由On Error Resume Next语句处理错误。Private Sub Command2_Click() On Error Resume Next Data1.Recordset.Delete Data1.Recordset.MoveNext If Data1.Recordset.EOF Then Data1.Recordset.MoveLastEnd Sub 命令按钮Command3_Click事件的编程思路与Command1_Click事件类似,根据按钮提示文字调用Edit方法进入编辑状态或调用Updat

58、e方法将修改后的数据写入到数据库,并控制其他3个按钮的可用性,代码如下:Private Sub Command3_Click() On Error Resume Next Command1.Enabled = Not Command1.Enabled Command2.Enabled = Not Command2.Enabled Command4.Enabled = Not Command4.Enabled Command5.Enabled = Not Command5.Enabled If Command3.Caption = 修改 Then Command3.Caption = 确认 Data1.Recordset.Edit Text1.SetFocus Else Command3.Caption = 修改 Data1.Recordset.Update End IfEnd Sub命令按钮Command4_Click事件使用UpdateControls方法放弃操作,代码如下:Private Sub Command4_Click() On Error Resume Next Command1.Caption = 新增

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!