首页 VB数据库编程技术实例(可编辑)

VB数据库编程技术实例(可编辑)

举报
开通vip

VB数据库编程技术实例(可编辑)VB数据库编程技术实例(可编辑) VB数据库编程技术实例 VB数据库编程技术 一 ODBC概述 在传统的数据库管理系统中,每个数据库管理系统都有自己的应用程序开发接口 API ,微软公司开发了ODBC Open DataBase Connectivity,即开放数据库互连 。 ODBC 是一套开放数据库系统应用程序接口规范,目前它已成为一种工业标准,它提供了统一的数据库应用编程接口 API ,为应用程序提供了一套高层调用接口规范和基于动态连接库的运行支持环境。使用ODBC开发数据库应用时,应用程序调用的...

VB数据库编程技术实例(可编辑)
VB数据库编程技术实例(可编辑) VB数据库编程技术实例 VB数据库编程技术 一 ODBC概述 在传统的数据库管理系统中,每个数据库管理系统都有自己的应用程序开发接口 API ,微软公司开发了ODBC Open DataBase Connectivity,即开放数据库互连 。 ODBC 是一套开放数据库系统应用程序接口 规范 编程规范下载gsp规范下载钢格栅规范下载警徽规范下载建设厅规范下载 ,目前它已成为一种工业 标准 excel标准偏差excel标准偏差函数exl标准差函数国标检验抽样标准表免费下载红头文件格式标准下载 ,它提供了统一的数据库应用编程接口 API ,为应用程序提供了一套高层调用接口规范和基于动态连接库的运行支持环境。使用ODBC开发数据库应用时,应用程序调用的是标准的ODBC函数和SQL语句,屏蔽了DBMS之间的差异数据库底层操作由各个数据库的驱动程序完成。因此应用程序有很好的适应性和可移植性,并且具备了同时访问多种数据库管理系统的能力,从而彻底克服了传统数据库应用程序的缺陷。主要任务包括:建立与数据源的连接;向数据源发送SQL请求;断开与数据源的连接数据源是指任一种可以通过ODBC连接的数据库管理系统,它包括要访问的数据库和数据库的运行平台。数据源名掩盖了数据库服务器或数据库文件间的差别,通过定义多个数据源,每个数据源指向一个服务器名,就可在应用程序中实现同时访问多个DBMS的目的。 数据源 Data Source Name,简称DSN 是驱动程序与DBS连接的桥梁,数据源不是DBS,而是用于表达一个ODBC驱动程序和DBMS特殊连接的命名。在连接中,用数据源名来代表用户名、服务器名、所连接的数据库名等,可以将数据源名看成是与一个具体数据库建立的连接。 数据源分为以下三类: 1 用户数据源:用户创建的数据源,称为“用户数据源”。此时只有创建者才能使用,并且只能在所定义的机器上运行。任何用户都不能使用其他用户创建的用户数据源。 2 系统数据源:所有用户和在Windows NT下以服务方式运行的应用程序均可使用系统数据源。 3 文件数据源:文件数据源是ODBC 3.0以上版本增加的一种数据源,可用于企业用户,ODBC驱动程序也安装在用户的计算机上。创建表格 SQL语言中的create table语句被用来建立新的数据库表格。Create 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 varchar 20 , age number 3 , address varchar 30 , city varchar 20 ; 简单来说,创建新表格时,在关键词create table后面加入所要建立的表格的名称,然后在括号内顺次设定各列的名称,数据类型,以及可选的限制条件等。注意,所有的SQL语句在结尾处都要使用“;”符号。 使用SQL语句创建的数据库表格和表格中列的名称必须以字母开头,后面可以使用字母,数字或下划线,名称的长度不能超过30个字符。注意,用户在选择表格名称时不要使用SQL语言中的保留关键词,如select, create, insert等,作为表格或列的名称。 数据类型用来设定某一个具体列中数据的类型。例如,在姓名列中只能采用varchar或char的数据类型,而不能使用number的数据类型。 SQL语言中较为常用的数据类型为: char size :固定长度字符串,其中括号中的size用来设定字符串 的最大长度。Char类型的最大长度为255字节。 varchar size :可变长度字符串,最大长度由size设定。 number size :数字类型,其中数字的最大位数由size设定。 Date:日期类型。 number size,d :数字类型,size决定该数字总的最大位数,而d则用于设定该数字在小数点后的位数。 最后,在创建新表格时需要注意的一点就是表格中列的限制条件。所谓限制条件就是当向特定列输入数据时所必须遵守的规则。例如,unique这一限制条件要求某一列中不能存在两个值相同的 记录 混凝土 养护记录下载土方回填监理旁站记录免费下载集备记录下载集备记录下载集备记录下载 ,所有记录的值都必须是唯一的。除unique之外,较为常用的列的限制条件还包括not null和primary key等。Not null用来规定表格中某一列的值不能为空。Primary key则为表格中的所有记录规定了唯一的标识符。简单的SQL查询只包括选择列表、FROM子句和WHERE子句。它们分别说明所查询列、查询的 表或视图、以及搜索条件等。„From [, ]„[Where ][Group by [Having ]][Order by [Asc/Desc] ] Group by :按列名1的值进行分组,属性值相等的为一个组,如果带Having短句,表示只有满足指定条件的才输出。 例如,下面的语句查询testtable表中姓名为“张三”的nickname字段和email字段。 SELECT nickname,email FROM testtable WHERE name '张三' 一 选择列表 选择列表 select_list 指出所查询列,它可以是一组列名列表、星 号、表达式、变量 包括局部变 量和全局变量 等构成。 1、选择所有列 例如,下面语句显示testtable表中所有列的数据: SELECT * FROM testtable 2、选择部分列并指定它们的显示次序 查询结果集合中数据的排列顺序与选择列表中所指定的列名排列顺 序相同。 例如: SELECT nickname,email FROM testtable 3、更改列标题 在选择列表中,可重新指定列标题。定义格式为: 列标题 列名 列名 列标题 如果指定的列标题不是标准的标识符格式时,应使用引号定界符,例 如,下列语句使用汉字显示列 标题: SELECT 昵称 nickname,电子邮件 email FROM testtable 4、删除重复行 SELECT语句中使用ALL或DISTINCT选项来显示表中符合条件的所有行或删除其中重复的数据行,默认 为ALL。使用DISTINCT选项时,对于所有重复的数据行在SELECT返回的结果集合中只保留一行。 5、限制返回的行数 使用TOP n [PERCENT]选项限制返回的数据行数,TOP n说明返回n行,而TOP n PERCENT时,说明n是 表示一百分数,指定返回的行数等于总行数的百分之几。 例如: SELECT TOP 2 * FROM testtable SELECT TOP 20 PERCENT * FROM testtable 二 FROM子句 FROM子句指定SELECT语句查询及与查询相关的表或视图。在FROM子句中最多可指定256个表或视图, 它们之间用逗号分隔。 在FROM子句同时指定多个表或视图时,如果选择列表中存在同名列,这时应使用对象名限定这些列 所属的表或视图。例如在usertable和citytable表中同时存在cityid列,在查询两个表中的cityid时应 使用下面语句格式加以限定: SELECT username,citytable.cityid FROM usertable,citytable WHERE usertable.cityid citytable.cityid 在FROM子句中可用以下两种格式为表或视图指定别名: 表名 as 别名 表名 别名 二 FROM子句 FROM子句指定SELECT语句查询及与查询相关的表或视图。在FROM子句中最多可指定256个表或视图, 它们之间用逗号分隔。 在FROM子句同时指定多个表或视图时,如果选择列表中存在同名列,这时应使用对象名限定这些列 所属的表或视图。例如在usertable和citytable表中同时存在cityid列,在查询两个表中的cityid时应 使用下面语句格式加以限定: SELECT username,citytable.cityid FROM usertable,citytable WHERE usertable.cityid citytable.cityid 在FROM子句中可用以下两种格式为表或视图指定别名: 表名 as 别名 表名 别名 例如上面语句可用表的别名格式表示为: SELECT username,b.cityid FROM usertable a,citytable b WHERE a.cityid b.cityid SELECT不仅能从表或视图中检索数据,它还能够从其它查询语句所返回的结果集合中查询数据。 例如: SELECT a.au_fname+a.au_lname FROM authors a,titleauthor ta SELECT title_id,title FROM titles WHERE ytd_sales 10000 AS t WHERE a.au_id ta.au_id AND ta.title_id t.title_id 此例中,将SELECT返回的结果集合给予一别名t,然后再从中检索数据。 三 使用WHERE子句设置查询条件 WHERE子句设置查询条件,过滤掉不需要的数据行。例如下面语句查询年龄大于20的数据: SELECT * FROM usertable WHERE age 20 WHERE子句可包括各种条件运算符: 比较运算符 大小比较 : 、 、 、 、 、 、! 、! 范围运算符 表达式值是否在指定的范围 :BETWEEN„AND„ NOT BETWEEN„AND„ 列表运算符 判断表达式是否为列表中的指定项 :IN 项1,项2„„ NOT IN 项1,项2„„ 模式匹配符 判断值是否与指定的字符通配格式相符 :LIKE、NOT LIKE 空值判断符 判断表达式是否为空 :IS NULL、NOT IS NULL 逻辑运算符 用于多条件的逻辑连接 :NOT、AND、OR 1、范围运算符例:age BETWEEN 10 AND 30相当于age 10 AND age 30 2、列表运算符例:country IN 'Germany','China' 3、模式匹配符例:常用于模糊查找,它判断列值是否与指定的字符串格式相匹配。可用于char、 varchar、text、ntext、datetime和smalldatetime等类型查询。 可使用以下通配字符: 百分号%:可匹配任意类型和长度的字符,如果是中文,请使用两个百分号即%%。 下划线_:匹配单个任意字符,它常用来限制表达式的字符长度。 方括号[]:指定一个字符、字符串或范围,要求所匹配对象为它们中的任一个。 [^]:其取值也[] 相同,但它要求所匹配对象为指定字符以外的任一个字符。 例如: 限制以Publishing结尾,使用LIKE '%Publishing' 限制以A开头:LIKE '[A]%' 限制以A开头外:LIKE '[^A]%' 4、空值判断符例WHERE age IS NULL 5、逻辑运算符:优先级为NOT、AND、OR 四 查询结果排序 使用ORDER BY子句对查询返回的结果按一列或多列排序。ORDER BY子句的语法格式为: ORDER BY column_name [ASC|DESC] [,„n] 其中ASC表示升序,为默认值,DESC为降序。ORDER BY不能按ntext、text和image数据类型进行排 序。 例如: SELECT * FROM usertable ORDER 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, city values ‘Li’, ‘Ming’, 45, ‘No.77 Changan Road’, ‘Beijing” ; 简单来说,当向数据库表格中添加新记录时,在关键词insert into后面输入所要添加的表格名称,然后在括号中列出将要添加新值的列的名称。最后,在关键词values的后面按照前面输入的列的顺序对应的输入所有要添加的记录值。更新记录SQL语言使用update语句更新或修改满足规定条件的现有记录。Update语句的格式为: update tablename set columnname newvalue [, nextcolumn newvalue2...] where columnname OPERATOR value [and|or column OPERATOR value]; 例如: update employee set age age+1 where first_name ‘Mary’and last_name ‘Williams’; 使用update语句时,关键一点就是要设定好用于进行判断的where条件从句。删除记录SQL语言使用delete语句删除数据库表格中的行或记录。Delete语句的格式为: delete from tablename where columnname OPERATOR value [and|or column OPERATOR value]; 例如: delete from employee where lastname May; 简单来说,当需要删除某一行或某个记录时,在delete from关键词之后输入表格名称,然后在where从句中设定删除记录的判断条件。注意,如果用户在使用delete语句时不设定where从句,则表格中的所有记录将全部被删除。删除数据库表格在SQL语言中使用drop table命令删除某个表格以及该表格中的所有记录。Drop table命令的使用格式为: drop table tablename; 例如: drop table employee; 如果用户希望将某个数据库表格完全删除,只需要在drop table命令后输入希望删除的表格名称即可。Drop table命令的作用与删除表格中的所有记录不同。删除表格中的全部记录之后,该表格仍然存在,而且表格中列的信息不会改变。而使用drop table命令则会将整个数据库表格的所有信息全部删除。ADO ActiveX Data Object 数 据访问接口是Microsoft处理数据库信息的最新技术。它是一种ActiveX对象,采用了被称为OLE DB的数据访问模式,是数据访问对象DAO、远程数据对象RDO和开放数据库互连ODBC三种方式的扩展。ADO对象模型定义了―个可编程的分层对象集合,主要由三个对象成员Connection、Command和Recordset对象,以及几个集合对象Errors、Parameters和Fields等所组成。图.13示意了这些对象之间的关系。表.6是对这些对象的分工描述。 图.13 ADO对象模型 表.6 ADO对象描述 对象名 描 述 Connection 连接数据来源 Command 从数据源获取所需数据的命令信息 Recordset 所获得的一组记录组成的记录集 Error 在访问数据时,由数据源所返回的错误信息 Parameter 与命令对象有关的参数 Field 包含了记录集中某个字段的信息 要想在程序中使用ADO对象,必须先为当前工程引用ADO的对象库。引用方式是执行“工程”菜单的“引用”命令,启动引用对话框,在清单中选取“Microsoft ActiveX Data Objects 2.0 Library”选项。 在使用ADO数据控件前,必须先通过“工程|部件”菜单命令选择"Microsoft ADO Data Control 6.0 OLEDB ”选项,将ADO数据控件添加到工具箱。ADO数据控件与Visual Basic的内部Data控件很相似,它允许使用ADO数据控件的基本属性快速地创建与数据库的连接。 1 ConnectionString属性 ADO控件没有DatabaseName属性,它使用ConnectionString 属性与数据库建立连接。该属性包含了用于与数据源建立连接的相关信息,ConnectionString属性带有4个参数,如表.7所示。 2 RecordSource属性 RecordSource确定具体可访问的数据,这些数据构成记录集对象Recordset。该属性值可以是数据库中的单个表名,一个存储查询,也可以是使用SQL查询语言的一个查询字符串。 表.7 ConnectionString属性参数 参数 描述 Provide 指定数据源的名称 FileName 指定数据源所对应的文件名 RemoteProvide 在远程数据服务器打开一个客户端时所用的数据源名称 RemoteServer 在远程数据服务器打开一个主机端时所用的数据源名称 3 ConnectionTimeout属性 用于数据连接的超时设置,若在指定时间内连接不成功显示超时信息。 (4)Records属性 定义从一个查询中最多能返回的记录数。 ADO数据控件的 方法 快递客服问题件处理详细方法山木方法pdf计算方法pdf华与华方法下载八字理论方法下载 和事件与Data控件的方法和事件完全一样。 下面通过使用ADO数据控件连接Student.mdb数据库来说明ADO数据控件属性的设置。 步骤1:在窗体上放置ADO数据控件,控件名采用默认名“Adodcl”。 步骤2:单击ADO控件属性窗口中的ConnectionString属性右边的“„”按钮,弹出“属性页”对话框。在该对话框中允许通过三种不同的方式连接数据源: “使用连接字符串”只需要单击“生成”按钮,通过选项设置自动产生连接字符串。 “使用Data Link文件”表示通过―个连接文件来完成。 “使用ODBC数据资源名称”可以通过下拉式列表框,选择某个创建好的数据源名称 DSN ,作为数据来源对远程数据库进行控制。 步骤3:采用“使用连接字符串”方式连接数据源。单击“生成”按钮,打开“数据链接属性”对话框。在“提供者”选项卡内选择一个合适的OLE DB数据源,Student.mdb是Access数据库,选择“Microsoft Jet 3.51 OLE DB Provider”选项。然后单击“下―步”按钮或打开“连接”选项卡,在对话框内指定数据库文件,这里为Student.mdb。为保证连接有效,可单击“连接”选项卡右下方的“测试连接”按钮,如果测试成功则关闭ConnectionString属性页。 步骤4:单击ADO控件属性窗口中的RecordSource属性右边的“„”按钮,弹出记录源属性页对话框。 在“命令类型”下拉式列表框中选择“2 adCmdTable”选项,在“表或存储过程名称”下拉式列表框中选择Student.mdb数据库中的“基本情况”表,关闭记录源属性页。此时,已完成了ADO数据控件的连接工作。 由于ADO数据控件是一个ActiveX控件,也可以用鼠标右键单击 ADO数据控件,在弹出的快捷菜单中选择“ADODC属性”菜单命令,打开ADO数据控件属性页对话框,一次完成步骤1~步骤4的全部设置。3 ADO数据控件上新增绑定控件的使用 随着ADO对象模型的引入,Visual Basic 6.0除了保留以往的一些绑定控件外,又提供了一些新的成员来连接不同数据类型的数据。这些新成员主要有DataGrid、DataCombo、DataList、DataReport、MSHFlexGrid、MSChart控件和MonthView等控件。这些新增绑定控件必须使用ADO数据控件进行绑定。 Visual Basic 6.0在绑定控件上不仅对DataSource和DataField属性在连接功能上作了改进,又增加了DataMember与DataFormat属性使数据访问的队列更加完整。DataMember属性允许处理多个数据集,DataFormat属性用于指定数据内容的显示格式。 例.6 使用ADO数据控件和DataGrid数据网格控件浏览数据库Student.mdb,并使之具有编辑功能。 在窗体上放置ADO数据控件,并按前面介绍的ADO数据控件属性设置过程连接数据库Student.mdb中的基本情况表。 DataGrid控件允许用户同时浏览或修改多个记录的数据。在使用DataGrid控件前也必须先通过“工程|部件”菜单命令选择“Microsoft DataGrid Control 6.0 OLEDB ”选项,将DataGrid控件添加到工具箱,再将DataGrid控件放置到窗体上。设置DataGrid网格控件的DataSource属性为Adodc1,就可将DataGrid1绑定到数据控件Adodc1上。 显示在DataGrid网格内的记录集,可以通过DataGrid控件的AllowAddNew、AllowDelete和AllowUpdate属性设置控制增,删、改操作。 如果要改变DataGrid网格上显示的字段,可用鼠标右键单击DataGrid控件,在弹出的快捷菜单中选择“检索字段”选项。Visual Basic提示是否替换现有的网格布局,单击“是”按钮就可将表中的字段装载到DataGrid控件中。再次用鼠标右键单击DataGrid控件,在弹出的快捷菜单中选择“编辑”选项,进入数据网格字段布局的编辑状态,此时,当鼠标指在字段名上时,鼠标指针变成黑色向下箭头。用鼠标右键单击需要修改的字段名,在弹出的快捷菜单中选择“删除”选项,就可从DataGrid控件中删除该字段,也可选择“属性”选项修改字段的显示宽度或字段标题。 图.14所示为具有增、删、改功能的数据网格绑定。标有 号的记录行表示允许增加新记录。 图.14 具有增、删、改功能的数据网格绑定 Data控件是Visual Basic访问数据库的一种利器,它能够利用三种Recordset对象来访问数据库中的数据,数据控件提供有限的不需编程而能访问现存数据库的功能,允许将Visual Basic的窗体与数据库方便地进行连接。要利用数据控件返回数据库中记录的集合,应先在窗体上画出控件,再通过它的三个基本属性Connect、DatabaseName和RecordSource设置要访问的数据资源。 Data控件属性 Connect属性指定数据控件所要连接的数据库类型,Visual Basic默认的数据库是Access的MDB文件,此外,也可连接DBF、XLS、ODBC等类型的数据库。 DatabaseName属性指定具体使用的数据库文件名,包括所有的路径名。如果连接的是单表数据库,则DatabaseName属性应设置为数据库文件所在的子目录名,而具体文件名放在RecordSource属性中。 例如要连接一个Microsoft Access的数据库C:\Student.mdb,则设置DatabaseName ”C:,Student.mdb",Access数据库的所有表都包含在一个MDB文件中。如果连接一个FoxPro数据库如C:,VB6,stu_fox.dbf,则DatabaseName ”C:,VB6”,RecordSource ”stu_fox.dbf”,stu_fox数据库只含有一个表。 RecordSource确定具体可访问的数据,这些数据构成记录集对象Recordset。该属性值可以是数据库中的单个表名,―个存储查询,也可以是使用SQL查询语言的一个查询字符串。 例如要指定Student.mdb数据库中的基本情况表,则RecordSource ”基本情况”。而RecordSource ”Select From 基本情况Where专业 ’物理’ ”,则表示要访问基本情况表中所有物理系学生的数据。 RecordType属性确定记录集类型。 当记录指针指向Recordset对象的开始 第一个记录前 或结束 最后一个记录后 时,数据控件的EofAction和BofAction属性的设置或返回值决定了数据控件要采取的操作。属性的取值如表.1所示。 表.1 EofAction和BofAction属性 属性 取值 操作 BofAction 0 控件重定位到第―个记录 1 移过记录集开始位,定位到一个无效记录,触发数据控件对第一个记录的无效事件Validate EofAction 0 控件重定位到最后―个记录 1 移过记录集结束位,定位到一个无效记录,触发数据 控件对最后一个记录的无效事件Validate 2 向记录集加入新的空记录,可以对新记录进行编辑,移动记录指针,新记录写入数据库 在Visual Basic中,数据控件本身不能直接显示记录集中的数据,必须通过能与它绑定的控件来实现。可与数据控件绑定的控件对象有文本框、标签、图像框、图形框、列表框、组合框、复选框、网格、DB列表框、DB组合框、DB网格和OLE容器等控件。要使绑定控件能被数据库约束,必需在 设计 领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计 或运行时对这些控件的两个属性进行设置: 1 DataSource属性 DataSource属性通过指定―个有效的数据控件连接到一个数据库上。 2 DataField属性 DataField属性设置数据库有效的字段与绑定控件建立联系。 绑定控件、数据控件和数据库三者的关系如图.7所示。 图.7 绑定控件、数据控件和数据库三者的关系 当上述控件与数据控件绑定后,Visual Basic将当前记录的字段值赋给控件。如果修改了绑定控件内的数据,只要移动记录指针,修改后的数据会自动写入数据库。数据控件在装入数据库时,它把记录集的第一个记录作为当前记录。当数据控件的BofAction属性值设置为2时,当记录指针移过记录集结束位,数据控件会自动向记录集加入新的空记录。 例.1 建立student.mdb数据库,它包含两个表:“基本情况”表和“学生成绩表”。表.2 学生基本情况表结构 字段名 类型 宽度 学号 Text 6 姓名 Text 10 性别 Text 2 专业 Text 10 出生年月 Date 8 照片 Binary 0 表.3 学生成绩表结构 字段名 类型 宽度 学号 Text 6 课程 Text 10 成绩 Long 4 学期 Text 2 用可视化数据管理器建立以上设计的数据库及其表,表中数据可自行录入。 例.2 设计一个窗体用以显示建立的student.mdb数据库中基本情况表的内容。 基本情况表包含了6个字段,故需要用6个绑定控件与之对应。这里用一个图形框显示照片和5个文本框显示学号、姓名等数据。本例中不需要编写任何代码,具体操作步骤如下: 1 参考如图.8所示窗体,在窗体上放置1个数据控件,一个图形框、5个文本框和5个标签控件。5个标签控件分别给出相关的提示说明。 图.8 显示Student.mdb基本情况表的数据 2 将数据控件Data1的Connect属性指定为Access类型,DatabaseName属性连接数据库Student.mdb,RecordSource属性设置为“基本情况”表。 3 图形框和5个文本框控件Text1,Text5的DataSource属性都设置成Data1。通过单击这些绑定控件的DataField属性上的“„”按钮,将下拉出基本情况表所含的全部字段,分别选择与其对应的字段照片、学号、姓名、性别、专业和出生年月,使之建立约束关系。 运行该工程即可出现图.8所示效果。5个文本框分别显示基本情况表内的字段:学号、姓名、性别、专业和出生年月的内容,图形框显示每个学生的照片。 使用数据控件对象的4个箭头按钮可遍历整个记录集中的记录。单击最左边的按钮显示第l条记录;单击其旁边的按钮显示上一条记录;单击最右边的按钮显示最后一条记录;单击其旁边的按钮显示下―条记录。数据控件除了可以浏览Recordset对象中的记录外,同时还可以编辑数据。如果改变了某个字段的值,只要移动记录,这时所作的改变存入数据库中。 Visual Basic 6.0提供了几个比较复杂的网格控件,几乎不用编写代码就可以实现多条记录数据显示。当把数据网格控件的DataSource属性设置为一个Data控件时,网格控件会被自动地填充,并且其列标题会用Data控件的记录集里的数据自动地设置。MsFlexGrid控件结合显示数据库中信息 例.3 用数据网格控件MsFlexGrid显示Student.mdb数据库中基本情况表的内容。 MsFlexGrid控件不是Visual Basic工具箱内的默认控件,需要在开发环境中选择“工程|部件”菜单命令,并在随即出现的对话框中选择“MicroSoft FlexGrid Control 6.0”选项,将其添加到工具箱中。本例所用控件的属性设置如表.4所示。请读者自行比较不可卷动列属性FixedCols 0与FixedCols 1的区别。Form启动后自动显示如图.9所示窗口。 表.4 控件属性 默认控件名 其它属性设置 Data1 DatabaseName ”c:\student.mdb” RecordsetType 0 RecordSource ”基本情况” MSFlexGrid1 DataSource Data1 FixCols 0 图.9使用数据网格控件 数据控件的内置功能很多,可以在代码中用数据控件的方法访问这些属性。 如果在设计状态没有为打开数据库控件的有关属性全部赋值,或当RecordSource在运行时被改变后,必须使用数据控件的Refresh方法激活这些变化。在多用户环境下,当其他用户同时访问同一数据库和表时,Refresh方法将使各用户对数据库的操作有效。 例如:将例.2的设计参数改用代码实现,使所连接数据库所在的文件夹可随程序而变化: 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 Sub UpdateControls方法可以将数据从数据库中重新读到被数据控件绑定的控件内。因而我们可使用UpdateControls方法终止用户对绑定控件内数据的修改。 例如:将代码Data1.UpdateControts放在一个命令按钮的Click事件中,就可以实现对记录修改的功能。 当对绑定控件内的数据修改后,数据控件需要移动记录集的指针才能保存修改。如果使用UpdateRecord方法,可强制数据控件将绑定控件内的数据写入到数据库中,而不再触发Validate事件。在代码中可以用该方法来确认修改。 由RecordSource确定的具体可访问的数据构成的记录集Recordset也是一个对象,因而,它和其他对象一样具有属性和方法。下面列出记录集常用的属性和方法。 AbsolutePosition返回当前指针值,如果是第1条记录,其值为0,该属性为只读属性。 Bof判定记录指针是否在首记录之前,若Bof为True,则当前位置位于记录集的第1条记录之前。与此类似,Eof判定记录指针是否在末记录之后。 Bookmark属性的值采用字符串类型,用于设置或返回当前指针的标签。在程序中可以使用Bookmark属性重定位记录集的指针,但不能使用AbsolutePostion属性。 在记录集中进行查找时,如果找到相匹配的记录,则Recordset的NoMatch属性为False,否则为True。该属性常与Bookmark属性一起使用。 RecordCount属性对Recordset对象中的记录计数,该属性为只读属性。在多用户环境下,RecordCount属性值可能不准确,为了获得准确值,在读取RecordCount属性值之前,可使用MoveLast方法将记录指针移至最后一条记录上。 使用Move方法可代替对数据控件对象的4个箭头按钮的操作遍历整个记录集。5种Move方法是: 1 MoveFirst方法:移至第1条记录。 2 MoveLast方法:移至最后一条记录。 3 MoveNext方法:移至下一条记录。 4 MovePrevious方法:移至上一条记录。 5 Move [n] 方法:向前或向后移n条记录,n为指定的数值。 例.4 在窗体上用4个命令按钮代替例.2数据控件对象的4个箭头按钮的操作。 在例.2的基础上,窗体上增加4个命令按钮,将数据控件的Visible属性设置为False,如图.10所示。通过对4个命令按钮的编程代替对数据控件对象的4个箭头按钮的操作。 图.10 用按钮代替数据控件对象的箭头按钮 命令按钮Command1_Click事件移至第1条记录,代码如下: Private Sub Command1_Click DFirst End Sub 命令按钮Command4_Click事件移至最后一条记录,代码如下: Private Sub Command4_Click DLast End Sub 另外两个按钮的代码需要考虑Recordset对象的边界的首 尾,如果越界,则用MoveFirst方法定位到第1条记录或用MoveLast方法定位到最后一条记录。程序代码如下: Private Sub Command2_Click DPrevious If D Then DFirst End Sub Private Sub Command3_Click DNext If D Then DLast End Sub 7(Find方法 使用Find方法可在指定的Dynaset或Snapshot类型的Recordset对象中查找与指定条件相符的一条记录,并使之成为当前记录。4种Find方法是: 1 FindFirst方法:从记录集的开始查找满足条件的第1条记录。 2 FindLast方法:从记录集的尾部向前查找满足条件的第l条记录。 3 FindNext方法:从当前记录开始查找满足条件的下一条记录。 4 FindPrevious方法:从当前记录开始查找满足条件的上一条记录。 4种Find方法的语法格式相同: 数据集合.Find方法 条件 搜索条件是一个指定字段与常量关系的字符串表达式。在构造表达式时,除了用普通的关系运算外,还可以用Like运算符。 例如:语句 “DFirst 专业 ’物理’”表示在由Data1数据控件所连接的数据库Student.mdb的记录集内查找专业为“物理”的第l条记录。这里,“专业”为数据库Student记录集中的字段名,在该字段中存放专业名称信息。要想查找下一条符合条件的记录,可继续使用语句:”DNext 专业 ’物理’”。 又例如:要在记录集内查找专业名称中带有“建”字的专业: DFirst 专业 Like ”*建*” 字符串“*建*”匹配字段专业中带有“建”字字样的所有专业名称字符串。 需要指出的是Find方法在找不到相匹配的记录时,当前记录保持在查找的始发处,NoMatch属性为True。如果Find方法找到相匹配的记录,则记录定位到该记录,Recordset的NoMatch属性为False。 使用Seek方法必须打开表的索引,它在Table表中查找与指定索引规则相符的第1条记录,并使之成为当前记录。其语法格式为: 数据表对象.seek comparison,keyl,key2„ Seek允许接受多个参数,第1个是比较运算符comparison, Seek方法中可用的比较运算符有 、 、 、 、 、 等。 在使用Seek方法定位记录时,必须通过Index属性设置索引。若在记录集中多次使用同样的Seek方法 参数相同 ,那么找到的总是同一条记录。 例如:假设数据库Student内基本情况表的索引字段为学号,满足学号字段值大于等于110001的第1条记录可使用以下程序代码: Data1.RecordsetType 0 ’设置记录集类型为Table Data1.RecordSource "基本情况" ’打开基本情况表单 Data1.Refresh Dx "jbqk_no" ’打开名称为jbqk_no的索引 D " ", "110001" 2.5 数据库记录的增、删、改操作 Data控件是浏览表格并编辑表格的好工具,但怎么输入新信息或删除现有记录呢?这需要编写几行代码,否则无法在Data控件上完成数据输入。数据库记录的增、删、改操作需要使用AddNew、Delete、Edit、Update和Refresh方法。它们的语法格式为: AddNew方法在记录集中增加新记录。增加记录的步骤为: 1 调用AddNew方法。 2 给各字段赋值。给字段赋值格式为:Recordset.Fields ”字段名” 值。 3 调用Update方法,确定所做的添加,将缓冲区内的数据写入数据库。 注意:如果使用AddNew方法添加新的记录,但是没有使用Update方法而移动到其他记录,或者关闭记录集,那么所做的输入将全部丢失,而且没有任何警告。当调用Update方法写入记录后,记录指针自动返回到添加新记录前的位置上,而不显示新记录。为此,可在调用Update方法后,使用MoveLast方法将记录指针再次移到新记录上。 要从记录集中删除记录的操作分为三步: 1 定位被删除的记录使之成为当前记录。 2 调用Delete方法。 3 移动记录指针。 注意:在使用Delete方法时,当前记录立即删除,不加任何的警告或者提示。删除一条记录后,被数据库所约束的绑定控件仍旧显示该记录的内容。因此,你必须移动记录指针刷新绑定控件,―般采用移至下一记录的处理方法。在移动记录指针后,应该检查Eof属性。 数据控件自动提供了修改现有记录的能力,当直接改变被数据库所约束的绑定控件的内容后,需单击数据控件对象的任一箭头按 钮来改变当前记录,确定所做的修改。也可通过程序代码来修改记录,使用程序代码修改当前记录的步骤为: 1 调用Edit方法。 2 给各字段赋值。 3 调用Update方法,确定所做的修改。 注意:如果要放弃对数据的所有修改,可用Refresh方法,重读数据库,没有调用Update方法,数据的修改没有写入数据库,所以这样的记录会在刷新记录集时丢失。 例.5 在例.2的基础上加入“新增”、“删除”、“修改”、“放弃”和“查找”钮,通过对5个按纽的编程建立增、删、改、查功能,如图.11所示。 图.11 编程建立增、删、改、查功能 Command1_Click事件的功能根据按钮提示文字调用AddNew方法或Update方法,并且控制具他4个按钮的可用性。当按钮提示为“新增”时调用AddNew方法,并将提示文字改为“确认”,同时使“删除”按钮Command2、“修改”按钮Command3和“查找”按钮Command5不可用,而使“放弃”按钮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 Command3.Enabled Command4.Enabled Not Command4.Enabled Command5.Enabled Not Command5.Enabled If Command1.Caption "新增" Then Command1.Caption "确认" Dew Text1.SetFocus Else Command1.Caption "新增" Dte DLast End If End Sub 命令按钮Command2_Click事件调用方法删除当前记录。当 记录集中的记录全部被删除后,再执行Move语句将发生错误,这时 由On Error Resume Next语句处理错误。 Private Sub Command2_Click On Error Resume Next Dte DNext If D Then DLast End Sub 命令按钮Command3_Click事件的编程思路与 Command1_Click事件类似,根据按钮提示文字调用Edit方法进入编 辑状态或调用Update方法将修改后的数据写入到数据库,并控制其 他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 "确认" D Text1.SetFocus Else Command3.Caption "修改" Dte End If End Sub 命令按钮Command4_Click事件使用UpdateControls方法放弃操 作,代码如下: Private Sub Command4_Click On Error Resume Next Command1.Caption "新增" Command3.Caption "修改" Command1.Enabled True Command2.Enabled True Command3.Enabled True Command4.Enabled False Command5.Enabled True Data1.UpdateControls DLast End Sub 命令按钮Command5_Click事件根据输入专业使用SQL语句查找 记录,代码如下: Private Sub Command5_Click Dim mzy As String mzy InputBox$ "请输入专业", "查找窗" Data1.RecordSource "Select * From 基本情况 Where 专 业 '" & mzy & "'" Data1.Refresh If D Then MsgBox "无此专业!", , "提示" Data1.RecordSource "基本情况" Data1.Refresh End If End Sub 上面的代码给出了数据表内数据处理的基本方法。需要注意的是:对于一条新记录或编辑过的记录必须要保证数据的完整性,这可通过Data1_Validate事件过滤无效记录。例如,下面的代码对学号字段进行测试,如果学号为空则输入无效。在本例中被学号字段所约束的绑定控件是Text1,可用Text1.DataChanged属性检测Text1控件所对应的当前记录中的字段值的内容是否发生了变化,Action 6表示Update操作 参见表.5 。此外,使用数据控件对象的任一箭头按钮来改变当前记录,也可确定所做添加的新记录或对已有记录的修改,Action取值1~4分别对应单击其中一个箭头按钮的操作,当单击数据控件的箭头按钮时也触发Validate事件。 Private Sub Data1_Validate Action As Integer, Save As Integer If Text1.Text "" And Action 6 Or Text1.DataChanged Then MsgBox "数据不完整,必须要有学号!" Data1.UpdateControls End If If Action 1 And Action 4 Then Command1.Caption "新增" Command3.Caption "修改" Command1.Enabled True Command2.Enabled True Command3.Enabled True Command4.Enabled False End If End Sub 关于照片的输入,较简单的方法是通过剪贴板将照片图片复制到Picture1控件。在输入照片时,事先需要用扫描仪将照片扫描到内存或形成图形文件,通过一个图片编辑程序将照片装入剪贴板,然后再从剪贴板复制到Picture1控件。本例通过Picture1_DblClick事件来完成剪贴板到Picture1控件的复制,当移动记录指针时,Picture1控件内的照片存入数据库,此外,也可以使用OLE拖放技术将照片图形文件拖放到Picture1控件或其他图形容器内。 Private Sub Picture1_DblClick Picture1.Picture Clipboard.GetData End Sub 3、VB中SQL与控件的结合的实现 SQL中使用SELECT语句实现查询,SELECT语句基本上是数据库 记录集的定义语句。Data控件的RecordSource属性不―定是数据表名,可以是数据表中的某些行或多个数据表中的数据组合。可以直接在Data控件的RecordSource属性栏中输入SQL,也可在代码中通过SQL语句将选择的记录集赋给数据控件的RecordSource属性,也可赋予对象变量。 例.8 将例.5中的查找功能改用SQL语句处理,显示某专业的学生记录。 使用SQL语句查询只要将例.5中命令按钮Command5_Click事件写为如下代码: Private Sub Command5_Click Dim mzy As String mzy InputBox$ "请输入专业", "查找窗" Data1.RecordSource "Select * From 基本情况 Where 专业 '" & mzy & "'" Data1.Refresh If D Then MsgBox "无此专业!", , "提示" Data1.RecordSource "基本情况" Data1.Refresh End If End Sub 程序中“Select *”选择表中所有字段 也可以指定选择部 分列 ;“From基本情况”短语指定数据来源;“Where 专业 '" & mzy & "'"”短语构成查询条件,用于过滤表中的记录;Data1.Refresh 方法激活这些变化。此时,若DTrue,表示记录过滤后无数据,重新打开原来的基本情况表。 注意:代码中的两处Refresh语句不能合用为一句,这是因为在执行了Select命令后,必须激活这些变化,然后才能判断记录集内有无数据。 也可用SQL语句实现模糊查询,命令按钮Command5_Click事件改为如下代码: Private Sub Command5_Click Dim mzy As String mzy InputBox$ "请输入专业", "查找窗" Data1.RecordSource "Select * From 基本情况 Where 专业 like '*" & mzy & "*'" Data1.Refresh If D Then MsgBox "无此专业!", , "提示" Data1.RecordSource "基本情况" Data1.Refresh End If End Sub 例.9 用SQL语句从Student.mdb数据库的两个数据表中选 择数据构成记录集,并通过数据控件浏览记录集。 在窗体上放置与例.2类似的控件,如图.20所示。Data控件的DatabaseName属性指定数据库Student.mdb,RecordSource属性空缺,各文本框的DataSource Data1,DataField属性分别设置为学号、姓名、课程、成绩,而照片字段绑定图形框。 本例要求从基本情况中选择学生的学号、姓名、照片,从学生成绩表中选择该学生的课程和成绩来构成记录集,可在Form_ Load事件中使用SQL语句,通过“Where 学生成绩表.学号 基本情况.学号”短语实现两表之间的连接,用Select命令从学生成绩表中选择课程、成绩字段,从基本情况表中选择学号、姓名和照片字段构成记录集: Private Sub Form_Load Data1.RecordSource "Select 基本情况.学号,基本情况.姓名,基本情况.照片,学生成绩表.课程,学生成绩表.成绩 From 学生成绩表,基本情况 Where 学生成绩表.学号 基本情况.学号" End Sub 当窗体启动后,数据显示如图 .19所示,数据控件上的箭头按钮可改变记录位置。如果要求显示的记录按一定的顺序排列,可使用ORDER BY子句。 图 .19 数据显示 注意:当FROM子句列出多个表时,它们出现的顺序并不重要。Select短语中字段的排列决定了所产生的记录集内每一列数据的排列顺序。为了提高可读性可以重新排序表中的字段。 例.10 用SQL指令按专业统计Student.mdb数据库中各专业的人数,要求按图.20所示形式输出。 在窗体上放置一个Data控件和一个网格控件MSFlexGrid1。Data1的DatabaseName属性指定数据库Student.mdb,网格控件的DataSource Data1。 图.20 通过数据控件浏览记录集 为了统计各专业的人数,需要对基本情况表内的记录按专业分组。“Group By专业”可将同一专业的记录合并成一条新记录。要记录统计结果,需要构造一个输出字段,此时可使用SQL的统计函数Count 作为输出字段,它按专业分组创建摘要值。若希望按用户要求的标题显示统计摘要值,可用As短语命名一个别名。“按专业统计人数”按钮的指令代码为: Private Sub Command1_Click Data1.RecordSource "select 专业,count * as 人数 from 基本情况 group by 专业" Data1.Refresh End Sub 运行结果如图.21。 图.21 使用SQL的统计函数 有时,我们只要返回一定数量的记录,如获取平均成绩最好的前5名,则“按平均成绩统计前5名” 按钮的指令代码为: Private Sub Command2_Click Data1.RecordSource "select top 5 学号,avg 成绩 as 平均成绩 from 学生成绩表 group by 学号 order by avg 成绩 desc" Data1.Refresh End Sub 这里,“Group by 学号”短语将同一学生的各门课程的记录合并成一条记录,由Avg 成绩 计算出该学生的平均成绩,“Order By Avg 成绩 Desc”短语按平均成绩的降序排列数据,“Top 5”短语返回最前面的5条记录。如果不包括ORDER BY子句,查询将从学生成绩表中返回随机的5条记录。“恢复原表内容”按钮的指令代码为: Private Sub Command3_Click Data1.RecordSource "基本情况" Data1.Refresh End Sub以上介绍的是在Data控件上使用SQL,如果要在ADO数据控件上使用SQL语句,最好通过代码配合ADO数据控件完成数据库的连接,这可给程序带来更大的灵活性。 例.11 我们将例.9中的Data控件改用ADO数据控件,用SQL语句从Student.mdb数据库的两个数据表中选择数据构成记录集。 将Data控件改用ADO数据控件Adodc1,各文本框的Datasource Adodc1,DataField属性分别设置为学号、姓名、课程、成绩,而字段照片绑定图形框。 ADO数据控件的ConnectionString属性设置为与数据源连接的 相关信息,通过操作完成与student.mdb的数据连接 此时,可查看到ConnectionString属性的内容 ;DataSource指定连接的数据库文件名,如图.22。 图.22 使用ADO数据控件 即DataSource属性使用SQL语句: select 学生成绩表.*,基本情况.姓名,基本情况.照片 from 学生成绩表,基本情况 where 学生成绩表.学号 基本情况.学号 程序执行后将产生与图.22所示相同的效果。 例.12 设计一个窗体,计算Student.mdb数据库内学生成绩表中每个学生的平均成绩,产生姓名、平均成绩和最低成绩三项数据,按平均成绩降序排列数据,并用该数据作图。 学生成绩表中没有平均成绩和最低成绩这两项数据,可以在SELECT子句内使用统计函数AVG 和Min 产生,“Group By学号”可将同一学生的记录合并成一条新记录。学生成绩表中没有姓名字段,故需要通过条件“基本情况.学号 学生成绩表.学号”从基本情况表取得。然后,将产生的记录集连接到ADO数据控件上。 要显示作图数据,可在窗体上放置一个网格控件(选择工程?部件中Microsoft Data Grid Control 6.0 OLEDB ),设置网格的DataSource Adodcl,将其绑定到ADO数据控件上。此例将Adodc1控件的Visible属性设为False,故在图.22中看不到Adodc1控件。 要绘制图表,可使用绑定控件MsChart。MsChart控件也是一个Active X控件,需要通过“工程?部件”菜单命令,将MsChart 控件添加到工具箱中。要将作图数据传送到Mschart控件,只需要设置MsChart1.DataSource Adodc1。如果只要选择部分数据作图,可以将作图数据存入到数组,再设置MsChart1.Data 数组名即可。 将Adodcl的RecordSource属性设置为SQL语句,代码如下: ”select 基本情况.姓名,avg 成绩 as 平均成绩,min 成绩 as 最低成绩 from 学生成绩表,基本情况 where 学生成绩表.学号 基本情况.学号 group by 学生成绩表.学号,基本情况.姓名 order by avg 成绩 desc” 程序执行后将产生图.23所示的效果。 图.23 显示作图数据 例.13 使用ADO数据控件,设计一个简单窗体,用来扫描student.mdb数据库的基本情况表。窗体中几个约束数据文本框绑定到连接表中当前记录的ADO数据控件。这个项目不需编程,步骤如下: 步骤1:开始新项目,并在项目工具箱中加进ADO数据控件。 步骤2:在窗体上放一个ADO数据控件的实例。 步骤3:右键单击控件,并从弹出菜单中选择“ADODC属性”命令(或单击Adodc1的ConnectionString属性旁的“„”按钮),打开ADO数据控件的属性页。 步骤4:选择“通用”标签,并选择“使用ODBC数据资源名称”单选项。 步骤5:现在要指定数据源 ADO数据控件联系的数据库 。 可以看出,可以指定多种数据库,但应用程序用相同的方法处理。不管实际提供表格的数据库为何种形式,它用相同的语句访问表格及其记录。 数据源名就是系统知道的数据库名。数据源名只要生成一次,此后任何应用程序都可以使用。如果系统上没有数据源名,则按下列步骤生成新的数据源名: 1.单击“新建”按钮,打开“创建新数据源”窗口。在这个窗口中可以选择数据源类型,选项包括: 文件数据源 所有用户均可以访问的数据库文件。 用户数据源 只有你能访问的数据库文件。 系统数据源 能登录该机器的任何用户都能访问的数据库文件。 2(选择“系统数据源”,以便从网上登录测试锁定机制 如果在网络环境中 。 3(单击“下一步”按钮显示“创建新数据源”窗口,指定访问数据库所用的驱动程序。 驱动程序必须符合数据库。可以看出,数据源可以是个大数据库,包括Access、Oracle、 SQL Server。本例采用Access数据库。 4(选择Microsoft Access Driver,并单击“下一步”按钮。 新窗口指出,已选择了系统数据源并用Access驱动程序访问。 5(单击“完成”按钮,生成数据源。 这时就可以指定将哪个Access数据库赋予新建的数据源。在出现的“ODBC Microsoft Access 安装”窗口中,执行如下操作步骤: 6(在第一个框中,指定数据源名mystudent,在“描述”框中,输入简短说明:student数据源(说明可以空缺)。 7(单击“选择”按钮,并通过“选定数据库”窗口选择数据库,找到VB98文件夹中的student.mdb 假设student.mdb存放在此 。 8(回到ADO数据控件的属性页时,新的数据源即会出现在“使用ODBC数据资源名称”下拉清单中。 步骤6:展开下拉清单,并选择mystudent数据源。 实际上,这就指定了要使用的数据库 类似于设计Data控件的DatabaseName属性 。 下一个任务是,选择ADO数据控件能看到的数据库记录 表格或SQL语句返回的记录集 。 步骤7:切换到“记录源”标签(或单击Adodc1的RecordSource属性旁的“„”按钮)。 步骤8:在“命令类型” 下拉清单中,选择adCmdTable项目,这是记录源的类型。 步骤9:在“表或存储过程名称”下拉的清单中出现数据库中的所有表名。选择基本情况表。 Adodc1控件的RecordSource属性栏中出现student.mdb数据库的基本情况表。 步骤10:将四个文本框控件和四个标题控件放在窗体上。将它们的DataSource Adodc1,DataField分别设置为学号、姓名、专业、出生年月。 Mystudent数据源已经注册到系统上,不必再次生成。它会自动出现在ADO数据控件属性页的“使用ODBC数据资源名称”下拉清单中。 运行结果如图.24。 图.24 使用ADO数据控件及ODBC例.14 ADO数据控件使用自己的高级约束数据控件,即DataList和DataCombo控件。 本例要求在DataList控件中显示学号,要将DataList控件与ADO数据控件连接,使用户每次选择清单中的新学号,窗体上的文本框中出现相应的字段。 要使用DataList和DataCombo控件,首先要将其加进工具箱。步骤如下: 1(选择“工程|部件”菜单,打开“部件”对话框,选取“Microsoft DataList Controls 6.0 OLEDB ”复选项。 2(将DataList控件的实例放在窗体上。 3(要用基本情况表中的学号建立DataList控件,设置属性RowSource Adodc1,ListField 学号。 如果这时运行应用程序,则会自动生成DataList控件,但 清单中所选的学号对约束数据控件没有影响。我们要加入一些代码,在清单中每次选择另一学号时,移动ADO数据控件,具体方法如下: Private Sub DataList1_Click Admark DataList1.SelectedItem End Sub 每次单击清单中的新项目时,这个项目就成为ADO数据控件的书签。 大多数情况下,用于自动建立DataList控件的数据通常没有排序。如果DataList控件中学号没有排序,就无法方便地找到清单中的项目。要使DataList控件中学号排序,按如下步骤修改ADO数据控件的RecordSource属性: 图9.25 Adodc1控件 的窗体。 2.右键单击Adodc1控件,并在属性页中将“ODBC 数据源名”设置为mystudent。 3(切换到“记录源” 标签,指定SQL 语句而不是表格:将“命令类型”设置为 adCmdUnknown,并在“命令文本”框中输人下列SQL语句: select * from 基本情况 order by 学号 VB提供了基于Microsoft Jet数据库引擎的数据访问能力,Jet引擎负责处理存储、检索、更新数据的结构,并提供了功能强大的面向对象的DAO编程接口。 VB数据库应用程序包含三部分,如图所示。 VB数据库应用程序的组成 24 ODBC 数据库 Jet引擎 用户界面 ActiveX数据对象 (ADO) 绑定控件 数据库 数据控件 Field集合 Field对象 Recordset对象 Parameter集合 Parameter对象 Command对象 Error集合 Error对象 Connection对象
本文档为【VB数据库编程技术实例(可编辑)】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_296227
暂无简介~
格式:doc
大小:79KB
软件:Word
页数:39
分类:互联网
上传时间:2017-09-18
浏览量:33