Visual Basic Data控件

常用属性、方法和事件

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

表9.4 Data控件的常用属性

|---------------|--------------------------------|
| 属 性 | 说 明 |
| DatabaseName | 用于确定数据控件使用的数据库的完整路径 |
| Connect | 指定链接的数据库的类型,默认值为Access |
| RecordSource | 指定数据控件所链接的记录来源,可以是数据表名,也可以是查询名 |
| RecordsetType | 指定数据控件存放记录集的类型,默认为Dynaset |
| BOFAction | 当移动到记录开始时程序将执行的操作 |
| EOFAction | 当移动到记录结尾时程序将执行的操作 |

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) UpdateContronls方法:可以从数据控件的记录集中再取回原先的记录内容,即恢复原先的值,取消修改。其格式为:

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("要保存修改吗?", vbYesNo)

If mb = vbNo Then

Save = False

Data1.UpdateControls

End If

End If

9.2.2 与控件绑定

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

数据感知控件的DataSource属性用于指定数据控件名,DataField属性用于在下拉列表中选择要显示的字段名称。在设置了DataSource和DataField属性之后,当用户用该控件来在Recordset中访问记录时,就会自动显示出指定字段的内容。

【例9.1】 创建一个学生基本情况录入界面,如图9.10所示。

图9.10 学生基本情况表

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

编写程序代码如下:

Private Sub Data1_Reposition()

Data1.Caption = "记录" & Data1.Recordset.AbsolutePosition + 1

End Sub

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

If Save = True Then

mb = MsgBox("要保存吗?", vbYesNo, "保存记录")

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("要删除吗?", vbYesNo, "删除记录")

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

相关推荐
feiduoge2 小时前
教程 43 - 渲染目标和可配置渲染通道
windows·游戏引擎·图形渲染
张世争3 小时前
windows 使用 cmake 方式源码编译 SDL2
windows·cmake·sdl2
MonkeyKing_sunyuhua3 小时前
ubuntu22.04安装nginx
运维·windows·nginx
张世争4 小时前
windows clion lvgl 使用 sdl2
windows·clion·sdl2
游荡的小狼5 小时前
Visual Studio Community 2022 安装
visual studio
cws2004015 小时前
HeidiSQL 使用操作说明书
运维·数据库·windows·mysql·heidisql
RealizeInnerSelf丶5 小时前
Web 网页如何唤起本地 Windows 应用并传递参数(含 Electron 自动注册 + 手动配置指南)
前端·windows
bkspiderx6 小时前
Visual Studio 2026安装常见问题与解决方案
ide·visual studio·vs2026·vc2026安装
武藤一雄6 小时前
一款基于WPF开发的BEJSON转换工具
windows·c#·json·wpf