Data控件在vb数据库编程中的应用

前端之家收集整理的这篇文章主要介绍了Data控件在vb数据库编程中的应用前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

Data控件是vb数据库编程访问数据库的一种利器,它能够利用三种Recordset对象来访问数据库中的数据,数据控件提供有限的不需编程而能访问现存数据库功能,允许将VisualBasic的窗体与数据库方便地进行连接。要利用数据控件返回数据库中记录的集合,应先在窗体上画出控件,再通过它的三个基本属性Connect、DatabaseName和RecordSource设置要访问的数据资源。

Data控件属性

1.Connect属性

Connect属性指定数据控件所要连接的数据库类型,VisualBasic默认的数据库是Access的MDB文件,此外,也可连接DBF、XLS、ODBC等类型的数据库

2.DatabaseName属性

DatabaseName属性指定具体使用的数据库文件名,包括所有的路径名。如果连接的是单表数据库,则DatabaseName属性应设置为数据库文件所在的子目录名,而具体文件名放在RecordSource属性中。

例如,要连接一个MicrosoftAccess的数据库C:\Student.mdb,则设置DatabaseName=”C:\Student.mdb",Access数据库的所有表都包含在一个MDB文件中。如果连接一个FoxPro数据库如C:\VB6\stu_fox.dbf,则DatabaseName=”C:\VB6”,RecordSource=”stu_fox.dbf”,stu_fox数据库只含有一个表。

3.RecordSource属性

RecordSource确定具体可访问的数据,这些数据构成记录集对象Recordset。该属性值可以是数据库中的单个表名,―个存储查询,也可以是使用SQL查询语言的一个查询字符串。

例如,要指定Student.mdb数据库中的基本情况表,则RecordSource=”基本情况”。而RecordSource=”Select*From基本情况Where专业=’物理’”,则表示要访问基本情况表中所有物理系学生的数据。

4.RecordType属性

RecordType属性确定记录集类型。

5.EofAction和BofAction属性

当记录指针指向Recordset对象的开始(第一个记录前)或结束(最后一个记录后)时,数据控件的EofAction和BofAction属性的设置或返回值决定了数据控件要采取的操作。属性的取值如表9.1所示。

表9.1EofAction和BofAction属性

属性

取值

操作

BofAction

0

控件重定位到第―个记录

1

移过记录集开始位,定位到一个无效记录,触发数据控件对第一个记录的无效事件Validate

EofAction

0

控件重定位到最后―个记录

1

移过记录集结束位,定位到一个无效记录,触发数据控件对最后一个记录的无效事件Validate

2

向记录集加入新的空记录,可以对新记录进行编辑,移动记录指针,新记录写入数据库

在VisualBasic中,数据控件本身不能直接显示记录集中的数据,必须通过能与它绑定的控件来实现。可与数据控件绑定的控件对象有文本框、标签、图像框、图形框、列表框、组合框、复选框、网格、DB列表框、DB组合框、DB网格和OLE容器等控件。要使绑定控件能被数据库约束,必需在设计或运行时对这些控件的两个属性进行设置:

(1)DataSource属性

DataSource属性通过指定―个有效的数据控件连接到一个数据库上。

(2)DataField属性

DataField属性设置数据库有效的字段与绑定控件建立联系。

绑定控件、数据控件和数据库三者的关系如图9.7所示。

数据控件


图9.7绑定控件、数据控件和数据库三者的关系

当上述控件与数据控件绑定后,VisualBasic将当前记录的字段值赋给控件。如果修改了绑定控件内的数据,只要移动记录指针,修改后的数据会自动写入数据库。数据控件在装入数据库时,它把记录集的第一个记录作为当前记录。当数据控件的BofAction属性值设置为2时,当记录指针移过记录集结束位,数据控件会自动向记录集加入新的空记录。

例9.1建立student.mdb数据库,它包含两个表:“基本情况”表和“学生成绩表”。参见表9.2和表9.3。

表9.2学生基本情况表结构

@H_945_404@

照片

字段名

类型

宽度

学号

Text

6

姓名

Text

10

性别

Text

2

专业

Text

10

出生年月

Date

8

Binary

0

表9.3学生成绩表结构

@H_945_404@

学期

字段名

类型

宽度

学号

Text

6

课程

Text

10

成绩

Long

4

Text

2

用可视化数据管理器建立以上设计的数据库及其表,表中数据可自行录入。

例9.2设计一个窗体用以显示建立的student.mdb数据库中基本情况表的内容

基本情况表包含了6个字段,故需要用6个绑定控件与之对应。这里用一个图形框显示照片和5个文本框显示学号、姓名等数据。本例中不需要编写任何代码,具体操作步骤如下:

(1)参考如图9.8所示窗体,在窗体上放置1个数据控件,一个图形框、5个文本框和5个标签控件。5个标签控件分别给出相关的提示说明。

(2)将数据控件Data1的Connect属性指定为Access类型,DatabaseName属性连接数据库Student.mdb,RecordSource属性设置为“基本情况”表。

(3)图形框和5个文本框控件Text1~Text5的DataSource属性都设置成Data1。通过单击这些绑定控件的DataField属性上的“…”按钮,将下拉出基本情况表所含的全部字段,分别选择与其对应的字段照片、学号、姓名、性别、专业和出生年月,使之建立约束关系。

运行该工程即可出现图9.8所示效果。5个文本框分别显示基本情况表内的字段:学号、姓名、性别、专业和出生年月的内容,图形框显示每个学生的照片。

使用数据控件对象的4个箭头按钮可遍历整个记录集中的记录。单击最左边的按钮显示第l条记录;单击其旁边的按钮显示上一条记录;单击最右边的按钮显示最后一条记录;单击其旁边的按钮显示下―条记录。数据控件除了可以浏览Recordset对象中的记录外,同时还可以编辑数据。如果改变了某个字段的值,只要移动记录,这时所作的改变存入数据库中。

VisualBasic6.0提供了几个比较复杂的网格控件,几乎不用编写代码就可以实现多条记录数据显示。当把数据网格控件的DataSource属性设置为一个Data控件时,网格控件会被自动地填充,并且其列标题会用Data控件的记录集里的数据自动地设置。

data控件与MsFlexGrid控件结合显示数据库中信息

用数据网格控件MsFlexGrid显示Student.mdb数据库中基本情况表的内容

MsFlexGrid控件不是VisualBasic工具箱内的默认控件,需要在开发环境中选择“工程|部件”菜单命令,并在随即出现的对话框中选择“MicroSoftFlexGridControl6.0”选项,将其添加到工具箱中。本例所用控件的属性设置如表9.4所示。请读者自行比较不可卷动列属性FixedCols=0与FixedCols=1的区别。Form启动后自动显示如图9.9所示窗口。

表9.4控件属性

默认控件名

其它属性设置

Data1

DatabaseName=”c:\student.mdb”

RecordsetType=0

RecordSource=”基本情况”

MSFlexGrid1

DataSource=Data1

FixCols=0

2.3数据控件的常用方法

学习数据控件的内置功能很多,可以在代码中用数据控件的方法访问这些属性

1.Refresh方法

如果在设计状态没有为打开数据库控件的有关属性全部赋值,或当RecordSource在运行时被改变后,必须使用数据控件的Refresh方法激活这些变化。在多用户环境下,当其他用户同时访问同一数据库和表时,Refresh方法将使各用户数据库的操作有效。

例如:将例9.2的设计参数改用代码实现,使所连接数据库所在的文件夹可随程序而变化:

PrivateSubForm_Load()

DimmpathAsString

Mpath=App.Path’获取当前路径

IfRight(mpath,1)<>”/”Thenmpath=mpath+”/”

Data1.DatabaseName=mpath+”Student.mdb”’连接数据库

Data1.RecordSource=”基本情况”’构成记录集对象

Data1.Refresh’激活数据控件

EndSub

2.UpdateControls方法

UpdateControls方法可以将数据从数据库中重新读到被数据控件绑定的控件内。因而我们可使用UpdateControls方法终止用户对绑定控件内数据的修改

例如:将代码Data1.UpdateControts放在一个命令按钮的Click事件中,就可以实现对记录修改功能

3.UpdateRecord方法

当对绑定控件内的数据修改后,数据控件需要移动记录集的指针才能保存修改。如果使用UpdateRecord方法,可强制数据控件将绑定控件内的数据写入到数据库中,而不再触发Validate事件。在代码中可以用该方法来确认修改

猜你在找的VB相关文章