关于Data 控件的使用有关问题!

关于VB中Data控件的使用
2008年04月14日 星期一 18:09

在控件箱中的Data控件是VB用于数据库操作的控件,双击Data控件或单击后在体上拖动出控件的大小,都可以看到Data控件的外观
 1.Data控件的常用属性

  (1)Connect属性

  Connect属性用来指定该数据控件所要链接的数据库格式,默认值为Access,其他还包括dBASE、FoxPro、Excel等。

  (2)DatabaseName属性

  DatabaseName属性是用于确定数据控件使用的数据库的完整路径。如果链接的Access 数据库,就可单击按钮定位.mdb文件。例如,选择"C:\dbbook.mdb"文件。

  (3)RecordSource属性

  RecordSource属性用于指定数据控件所链接的记录来源,可以是数据表名,也可以是查询名。在属性窗口中单击下拉箭头在列表中选出数据库中的记录来源。例如,选择客户信息表"Customers"。

  (4)RecordsetType属性

  RecordsetType属性用于指定数据控件存放记录的类型,包含表类型记录集、动态集类型记录集和快照类型记录集,默认为动态集类型。

  ¡表类型记录集(Table):包含实际表中所有记录,这种类型可对记录进行添加、删除、 修改、查询等操作,直接更新数据。

  ¡动态集类型记录集(Dynaset):可以包含来自于一个或多个表中记录的集合,即能从 多个表中组合数据,也可只包含所选择的字段。这种类型可以加快运行的速度,但不能自动更新数据。

  ¡快照类型记录集(Snapshot):与动态集类型记录集相似,但这种类型的记录集只能读不能更改数据。

  (5)BOFAction和EOFAction属性

  在运行时用户通过单击数据控件的指针按钮可移动记录到开始或结尾,BOFAction属性是指当用户移动到开始时程序将执行的操作,EOFAction指当用户移动到结尾时程序将执行的操作。

  EOFAcfion值为0(MoveFirst)是将第一笔记录作为当前记录,为1(BOF);9记录的开头。

  EOFAction值为0(Move Last)是将最后一笔记录作为当前记录,为1(EOF)指记录的末尾,为2(AddNew)移动到记录结尾并自动添加一记录。

  2.Data控件常用的方法

  (1)AddNew方法

  AddNew用于添加一个新记录,新记录的每个字段如果有默认值将以默认值表示,如果没有则为空白。

  例如,给Data1的记录集添加新记录:

  Data1.Recordset.AddNew

  (2)Delete方法

  Delete用于删除当前记录的内容,在删除后应将当前记录移到下一个记录。

  (3)Edit方法

  Edit用于对可更新的当前记录进行编辑修改。

  (4)Find方法群组

  Find方法群组是用于查找记录,包含FindFirst、FindLast、FindNext和FindPreviou方法,这4种方法查找的起点不同 。

Find方法 查找起点 查找方向
FindFirst 第一个记录 向后查找
FindLast 最后一个记录 向前查找
FindNext 当前记录 向后查找
FindRrevious 当前记录 向前查找
  例如,查找"客户号"字段为"10002"的记录:

  Datal.Recordset.FindFirst″客户号=′10002",
  If Datal.Recordset.NoMatchThen ′如果没找到
   MsgBox″找不到10002号客户″
  End If

  通常当查找不到符合条件的记录时,需要显示信息提示用户,因此使用NoMatch属性,当使用Find或Seek方法找不到相符的记录时,NoMatch属性为True。

  (5)Move方法群组

  Move方法群组是用于移动记录,包含MoveFirst、MoveLast、MoveNext和MovePrevious 方法,这四种方法分别是移到第一笔记录、移到最后一笔记录、移到下一笔记录和移到前一笔记录。

  注意:

  当在最后一个记录时,如果使用了MoveNext方法时EOF的值会变为True,如果再使 用MoveNext方法就会出错。对于MovePrevious方法如果前移,结果也是同样。

  (6)Refresh方法

  如果DatabaseName、ReadOnly、Exclusive或Connect属性的设置值发生改变,可以使用Refresh方法打开或重新打开数据库,用Refresh方法可以更新数据控件的集合内容。

  (7)Seek方法

  Seek方法适用于数据表类型(Table)记录集,通过一个已被设置为索引(Index)的字段,查找符合条件的记录,并使该记录为当前记录。

  语法:

  记录集.Seek比较式,key1,key2,...,key13

  例如,当索引为"客户号"字段时,查找客户号为"10005"的记录:

  Data1.Recordset.Seek″:″,″10005″

  (8)Update方法

  Update方法用于将修改的记录内容保存到数据库中。

  (9)UpdateControls方法

  UpdateControls方法可以从数据控件的记录集中再取回原先的记录内容,即恢复原先值。当在与数据控件链接的控件中修改了记录内容,可以用UpdateControls方法使这些控件显示恢复原来的值。

  3.Data控件常用的事件

  (1)Reposition事件

  Reposition事件是当某一个记录成为当前记录之后触发。通常利用该事件对当前记录的数据内容进行计算,触发该事件有以下几种原因:

  ¡单击数据控件的某个按钮,进行记录的移动。

  ¡使用Move方法群组。

  ¡使用Find方法群组。

  ¡其他可改变当前记录的属性或方法。

  (2)Validate事件

  Validate事件与Reposition事件不同,是当某一记录成为当前记录之前,或是在Update、Delete、Unload或Close操作之前触发。

  事件的定义如下:

  语法:

  Private Sub Data1_Validate (action As Integer ,save As Integer)

  其中:

  ¡action:用来指示引发这种事件的操作。

  ¡Save:用来指定被链接的数据是否修改了。

  例如,在Validate事件触发时确定记录内容是否修改,如果不修改则恢复:

  Private Sub Data1_Validate(Action As Integer ,Save As Integer)
   Dim mag
   if Save=True Then
    mag=MsgBox(″要保存修改吗?″ ,vbYesNo)
    If mag=vbNo Then
     Save=False
     Data1.UpdateControls ′恢复原先内容
    End if
   EndIf
  End Sub

  二、与控件绑定

  控件箱中的常用控件PictureBox、Label、TextBox、CheckBox、Image、OLE、ListBox 和ComboBox控件都能和Data的Recordset的一个字段绑定,与Data控件绑定的控件称为数据感知控件。

  1.数据感知控件的相关属性

  ¡DataSource属性:用于在下拉列表中选择想要绑定的控件名称。

  ¡DataField属性:用于在下拉列表中选择要显示的字段名称。
  2.绑定数据控件的步骤

  数据感知控件绑定的过程不需要加入任何程序代码,将文本框txtOrderNo与Dara1绑定的步骤如下:

  (1)将数据控件(Data1)放置在窗体中,将数据感知控件TextBox放置在窗体中并改名为txtOrderNo。

  (2)设置Data1的DatabaseName属性为"C:/dbbook.Mdb"文件,设置Data1的RecordSource属性为"Orders"表。

  (3)设置txtOrderNo的DataSource属性为Data1,设置txtOrderNo的DataField属性为"定单号"字段。

  [例Ex_Data1_out]创建一个订购图书的客户信息的输入界面,用文本框绑定Data控件,txtOrderNo、txtCuNo和txtDate分别显示"Customers"表的各字段。

  界面设计,窗体由4个按钮、3个标签、3个文本框和1个Dara控件组成。

  窗体文本框控件和Data控件的属性设置,标签和按钮属性设置省略。

对 象 控件名 属性名 属性值
TextBox txtCuNo


txtOrderNo


txtDate

Text
DataSource
DataField
Text
DataSource
DataField
Text
DataSource
DataField 空
Data1
客户号

Data1
定单号

Data1
订购日期
Data Data1
Caption
DataBaseName
RecondSource 客户信息
C:/dbbook.mdb
Oders
  程序代码如下:

  Option Explicit
  Private Sub cmdAdd_Click()
   ′添加记录
   Data1.Recordset.AddNew
   Data1.Recordset.Update
   Data1.Recordset.MoveLast
  End Sub
  Private Sub cmdDelete_Click()
   ′删除记录
   Dim mag
   mag= MsgBox(″要删除吗? ″ ,vbYesNo,″删除记录″ )
   If mag=VbYes Then
    Data1.Recordset.Delere
    Data1.Recordset,MoveLast
   End If
  End Sub

  当删除最后一个记录后,如果再删除就会出错,因此每次删除完将当前记录移到最后一个。

  Private Sub cmdend_Click()
   End
  End Sub
  Private Sub cmdedit_Click()
   ′修改记录
   Data1.Recordset.Edit
   Data1.Recordset.Update
  End Sub
  Private Sub Data1_Validate(Action As Integer, Save As Integer)
   ′确定是否修改,如不修改恢复原先内容
   Dim mag
   If Save = True Then
    mag = MsgBox("save?", vbYesNo, "save record")
    If mag = vbNo Then
     Save = False
     Data1.UpdateControls
    End If
   End If
  End Sub

 

VB6.0工具箱中的Data 控件在VB5.0就有的控件,它为了VB6.0的使用者方便兼容以VB5.0开发的数据库应用代码而保留的数据控见.它提供了一种访问数据库中数据的方法.通过设置属性,可以将数据控件与一个特定的数据库极其中的表联系起来,并可进入到数据库的任一记录.数据控件本身不显示数据,必须使用VB中绑定控件如TEXTBOX,LABELDBLIST,DBCOMBO,DBGRID等与之绑定来显示数据.
由于数据库的操作大量是用于查询数据,Data 控件的数据查询Seek方法与我们通常使用的SQL语句不同.如使用ADO数据控件则会方便的多,它能充分运用SQL查询语句对数据库的操作极为方便.建议你在基本掌握DATA控件后在ADO控件化较多时间,掌握ADO控件对用VB6.0开发数据库应用程序带来许多方便.

表格控件总览:   在VB开发环境中,表格控件在界面开发元素中占有重要的地位。它不仅有外观整洁、表达形式规范的优点,而且更重要的是它较高的信息表现率(就是相对于其他控件来说能够表达更多的信息),随着信息时代的到来,它的应用将更加的广泛。    那么在VB平台下,如何操作这一功能强大的控件元素呢?事实上我们知道,VB平台下面的表格控件是相当丰富的,总结下来提供了4种类型:Microsoft Data Bound grid Control、Microsoft Datagrid Control、Microsoft Flexgrid Control、Microsoft Hierarchial Flexgrid Control. 这四种表格各有其特点,下面我们一一讨论。   1. Microsoft Data Bound grid Control   此控件主要用于数据绑定(可以不绑定,但是因为不提供对单个cell的控制支持,所以实际上这样做是不经济的)。具体说来,就是数据源比较固定的情况下可以使用这种控件。   具体使用方法是设定此控件datasource属性,就可以不用编写任何代码就可以显示该数据源所指向的记录数据。比如可以将datasource设置为一个data控件,而data控件又指向数据库"成绩"的 一个"语文"表,那么当程序运行时,它就自动显示此"语文"表的数据。 基本步骤如下: 1、向工程上添加Microsoft Data Bound Grid Control控件,即DBGrid控件。 2、在窗体上添加DBGrid控件DBGrid1和Data控件Data1。 3、设置Data1的DatabaseName属性为你要看的数据库的名字。 4、设置Data1的RecordSource属性为表的名字或合法的SQL Select语句。 5、设置DBGrid1的DataSource属性为Data1。   从上面的分析看得出来,这个控件虽然操作方便,但是它也有局限性,就是不能对显示的数据进行灵活的控制操作,比如有些数据允许用户修改,有些数据却不允许用户修改,而此控件却只能提供全部数据源的原子操作:即要么全部允许修改,要么就全部不允许。还有另外此控件也不提供对单个单元格(cell)进行操作,所以提供不了更为个性化的界面风格。   2. Microsoft Datagrid Control   此控件跟前面介绍的Data Bound grid Control控件很相似,也是主要进行绑定操作,而缺点和Data Bound grid Control完全一样。但是它跟Data Bound grid Control不一样的是其数据源的驱动引擎只能是OLEDB形式的,不能是DAO,比如就可以使用ADO数据控件,不能使用DATA控件。而Data Bound grid Control却刚好和它相反,这一点在开发中一定要注意。   3. Microsoft Flexgrid Control与Microsoft Hierarchial Flexgrid Control.   这里重点介绍这两种控件,因为在实际开发中,这两种控件应用的场合更多一些,它不仅能够反映数据,而且也能把数据的修改信息反映到数据库中去,所以弥补了上述两种控件的不足。   如果数据不需要修改,那么可以进行绑定操作,其方法跟前面介绍的完全一样,就是通过设置DataSource属性来完成数据的显示工作。但是实际开发中,需要对整个表格控件更为灵活的显示控制。   在给出例程之前,有必要对这一控件进行比较详尽的认识:这种控件允许将文本或者图象放置于每个单元格之中,控件的Row与Col属性允许用户在代码中指定当前行和列,当然也可通过操作鼠标和键盘来改变这两个属性,而text属性指明当前单元格的文本。如果单元格的文本太长而不能完全显示出来的话,可以通过将WordWrap属性设置为true来达到显示的目的。下面将比较重要的属性小结如下:   DataSource---------用来指定需要绑定的数据源,比如data控件。   Cellpicture----------用来设定当前单元格的图象,便于显示该图象。此属性不能在设计时使用。   Col,Row---------------设定当前列和当前行,注意它们均是从0开始的,如果同时设定它们,可以指定当前的单元格。设计时也不能使用。   Cols,Rows---------------设置表格控件总的列数和行数。   Hwnd---------------表格句柄,可以结合Windows API对表格控件进行更高级的控制。   Text---------------指定当前的单元格的文本内容。   TextMatrix(i,j)-------此属性比较重要,它用来指定第I行和第j列所确定的单元格的文本内容。它等价于下面的代码: MSHFlexGrid1.Rows =i MSHFlexGrid1.Cols =j MSHFlexGrid1.Text =指定的字符串   WordWrap-------为ture时可以在当前单元格换行显示,否则如果要显示的字符的长度超过列宽,那么就不能显示完全。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值