Data控件

2026/4/24 19:56:30

10.2 Data控件

Visual Basic具有数据库联接和数据处理功能,因此可以把它作为数据库应用程序的开发环境。用Visual Basic作为数据库的开发平台具有简单、灵活和可扩充性等特点。 Visual Basic提供了两种与数据库引擎接口的方法:数据控件和数据访问对象。数据控件只给出有限的不需要编程而能访问现存数据库的功能,允许将Visual Basic的窗体与数据库方便地进行连接。

Data控件在工具箱中,不需要特殊的步骤加入,但要利用数据控件返回数据库中记录的集合,必须通过它的属性设置。使用数据控件,不需要编写代码就可以实现以下操作:

(1)与本地或远程的数据库建立连接。

(2)对连接的数据库执行SQL查询,打开指定的数据表或定义记录集。

(3)把数据字段传送到各种约束控件,并可在约束控件中显示或修改数据字段的值。 (4)根据约束字段中数据的变化,添加新记录或更新数据库。 (5)捕获访问数据时出现的错误。 (6)关闭数据库。

Data控件可以使用三种类型的Recordset对象中的任何一种来提供对存储在数据库中数据的访问。Recordset(记录集)作为一个对象,可以是数据库中的一组记录,也可以是整个数据表或者表的一部分。记录集分为三种类型:Table、Dynaset和Snapshot。表类型记录集(Table)包含表中所有记录,对数据表中的数据所进行的增加、删除、修改等操作,直接更新数据。动态集类型记录集(Dynaset)可以包含来自于一个或多个表中记录的集合,对这种类型的数据表所进行的各种操作都先在内存中进行,以提高运行速度。以快照类型记录集(Snapshot)打开的数据表或由查询返回的数据仅供读取而不能更改,主要适用于进行查询工作。

双击Data控件或单击后在窗体上拖动出控件的大小,都可以看到Data控件的外观,如图10.5所示。

图10.5 Date控件的外观

10.2.1 常用属性、方法和事件

Data控件的属性有些可用于其他控件,有些则是Data控件所特有的。表10.3列出了Date控件的一些常用属性。

10.3 属

Data控件的 常用属性 Connect

DatabaseNa me

RecordSourc e

RecordsetTy pe

BofAction EofAction ReadOnly

说 明

指定链接的数据库的类型,默认值为Access 用于确定数据控件使用的数据库的完整路径

指定数据控件所链接的记录来源,可以是数据表名,也可以是查询名 指定数据控件存放记录集的类型,默认为Dynaset 当移动到记录开始时程序将执行的操作 当移动到记录结尾时程序将执行的操作 控制能否对记录集进行写操作。

1. Data控件和Recordset对象的方法

(1)AddNew方法:用于添加一个新记录,新记录的每个字段如果有默认值,则以默认值表示,如果没有则为空白。例如,给Data1的记录集添加新记录:

Data1.Recordset.AddNew

(2)Delete方法:用于删除当前记录的内容,在删除后应将当前记录移到下一个记录。例如,删除数据库中的当前记录:

Data1.Recordset.Delete

(3)Find方法:用于在记录集中查找符合条件的记录。如果条件符合,则记录指针将定位在找到的记录上。Find方法包括:

FindFirst方法:查找符合条件的第一条记录。

FindLast方法:查找符合条件的最后一条记录。 FindPrevious方法:查找符合条件的上一条记录。 FindNext方法:查找符合条件的下一条记录。

例如,在学生基本情况表中查找政治面貌为党员的第一条记录:

Data1.Recordset.FindFirst \政治面貌='党员'\

当在数据表类型记录集进行查找时,还可以使用Seek方法。如果找不到符合条件的记录,应显示相关信息以提示用户,这可通过判断NoMatch属性来实现,如:

If Data1.Recordset.NoMatch Then MsgBox \找不到符合条件的记录\

(4)Move方法:可以使不同的记录成为当前记录,常用于浏览数据库中的数据。Move方法包括:Move,MoveFirst,MoveLast,MovePrevious和MoveNext方法。

如果Data控件定位在记录集的最后一条记录上,这时继续向后移动记录,就会使得记录集的EOF属性值变为True,不能再使用MoveNext方法向下移动记录,否则会产生错误。从而在使用MoveNext方法移动记录时应该先检测一下记录集的EOF属性:

If Data1.Recordset.EOF = False Then Data1.Recordset.MoveNext …… '处理当前记录

Else

Data1.Recordset.MoveLast End If

使用MovePrevious方法移动当前记录同样会出现与MoveNext方法类似的问题。因此,在使用MovePrevious方法时也应该先检测一下记录集的BOF属性。

(5)Refresh方法:主要用来建立或重新显示与Data控件相连接的数据库记录集。如果在程序运行过程中修改了数据控件的DatabaseName,ReadOnly,Exclusive或Connect属性的设置值,就必须用该方法来刷新记录集: Data1.Refresh

(6)Update方法:用于将修改的记录内容保存到数据库中。例如,在编辑完当前记录后,可用Update方法保存最新的修改:

Data1.Recordset.Update

(7)UpdateControls方法:可以从数据控件的记录集中再取回原先的记录内容,即恢复原先的值,取消修改。其格式为:

Data1.UpdateControls 2. Data控件的事件

除具有标准控件所具有的事件之外,Data控件还具有几个与数据库访问有关的特有事件:Reposition事件和Validate事件。

(1)Reposition事件:当用户单击Data控件上某个箭头按钮,或者在应用程序中使用了某个Move或Find方法时,一个新记录成为当前记录,均会触发Reposition事件。例如,用这个事件来显示当前记录指针的位置的代码为:

Private Sub Data1_Reposition()

Data1.Caption = Data1.Recordset.AbsolutePosition + 1 End Sub

(2)Validate事件:当某一记录成为当前记录之前,或是在Update,Delete,Unload或Close操作之前触发该事件。Validate事件的格式为:

Private Sub Data1_Validate(Action As Integer, Save As Integer)

其中,Action用来指示引发这种事件的操作,Save用来指定被连接的数据是否进行了修改。例如,在Validate事件触发时确定记录内容是否修改,如果不修改则恢复:

If Save = True Then

mb = MsgBox(\要保存修改吗?\) If mb = vbNo Then Save = False Data1.UpdateControls End If End If

10.2.2 用控件显示数据

在Visual Basic中数据控件本身只能进行数据库中数据的操作,不能独立进行数据的浏览,所以需要把具有数据绑定功能的控件同数据控件结合起来使用,共同完成数据的显示、查询等。Visual Basic中可与数据控件关联(或绑定)的控件有PictureBox,Label,TextBox,CheckBox,Image,ListBox和ComBox控件等。与Data控件绑定的控件也称为数据感知控件。

数据感知控件的DataSource属性用于指定数据控件名,DataField属性用于在下拉列表中选择要显示的字段名称。在设置了DataSource和DataField属性之后,当用户用该控件来在Recordset中访问记录时,就会自动显示出指定字段的内容。 【例10-1】 创建一个学生基本情况录入界面,如图10.6所示。

图10.6 学生基本情况表

首先在窗体上增加一个数据控件Data1,并将其Align属性设为2-AlignBottom,使之位于窗体的下端,DatabaseName属性设为St.mdb,RecordSource属性为“学生基本情况”数据表。然后在窗体上增加一个命令按钮数组Command1(0)~Command1(3),一个标签控件组Label1,一个文本框控件数组Text1(0)~Text1(5),并将Text1(0)~Text1(5)的DataSource属性均设为Data1,DataField属性分别为:学号、姓名、性别、出生年月、政治面貌和所在院系。

编写程序代码如下:

Private Sub Data1_Reposition()

Data1.Caption = \记录\ End Sub

Private Sub Data1_Validate(Action As Integer, Save As Integer) If Save = True Then

mb = MsgBox(\要保存吗?\保存记录\) If mb = vbNo Then Save = False Data1.UpdateControls End If End If End Sub

Private Sub Edit_Click(Index As Integer) Select Case Index Case 0 '添加记录 Data1.Recordset.AddNew Case 1 '删除记录

mb = MsgBox(\要删除吗?\删除记录\) If mb = vbYes Then Data1.Recordset.Delete Data1.Recordset.MoveLast End If

Case 2 '更新记录 Data1.UpdateRecord

Data1.Recordset.Bookmark = Data1.Recordset.LastModified Case 3 '退出 Unload Me End Select End Sub


Data控件.doc 将本文的Word文档下载到电脑
搜索更多关于: Data控件 的文档
相关推荐
相关阅读
× 游客快捷下载通道(下载后可以自由复制和排版)

下载本文档需要支付 10

支付方式:

开通VIP包月会员 特价:29元/月

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:xuecool-com QQ:370150219