首页

  1. 首页
  2. 测绘论文
  3. 内容

非编程方式访问数据库

在非编程方式下,窗体上的约束数据控件如果没有通过 Data 控件或等价的数据源控件(比如 RemoteData 控件)是不能自动访问数据库中的数据的。我们可以通过VB提供的 Data 控件来执行大部分数据访问操作,而且不用编写代码。Data控件在打开数据库时自动创建一个动态记录集,我们通过对记录集的操作来对表进行记录的增加、修改和删除。与 Data 控件相连结的约束数据控件,自动显示来自记录集当前记录的一个或多个字段的数据。如果 Data 控件被指示移动到另一个记录,则所有被连结的约束数据控件自动把当前记录的任何改变传递给 Data 控件,以保存在数据库中。

  对Data控件的引用控制可以通过属性窗方便地进行各属性的设置,也可以在过程代码窗中进行属性和方法的设置与引用。下面通过一个实例来加以说明。

  一、Data控件的属性

  1. 建立一个新的“标准 EXE”项目。分别在窗体上放置三个Label控件、三个Text控件、一个Data控件、四个Command控件。三个Label控件的 Name属性分别为“LblName、LblPhone、LblAddress”,Caption属性分别为“姓名、电话、地址”。三个Text控件的Name属性分别“TxtName 、TxtPhone、 TxtAddress”,Caption属性都为空("")。四个Command控件的Name属性分别为“CmdFirst、CmdPrevious、 CmdNext、 CmdLast”,Caption属性分别为“首记录、前记录、后记录、末记录”。

  2. 选择Data控件后,找到属性窗(Properties)中的DatabaseName属性,单击按钮打开对话框,选择在上一讲中所建立的数据库文件( C:Myfile)。

  3. 找到RecordSource属性,打开下拉选单选择可用项目,其中有库中的所有表格,选择Phone表。

  4. 选择第一个文本框(TxtName),在属性窗口中找到其DataSource属性,将其设置为Data1。

  5. 选择并点击TxtName的DataField属性,其中包含Phone表中所有的字段。将这个文本框的DataField属性设置为Phone表中的“姓名”,将另外两个文本框的DataSource属性也设置为Data1,将其DataField属性分别设置为“电话”和“地址”。

  6. 运行后,分别点击Data控件的四个按钮,它们代表 “第一个记录”、“前一个记录”、“后一个记录”、“最后一个记录”,观察文本框内容的变化。

  Data控件的RecordSource并不一定只是指定一个实际存在的表。如果你了解结构化查询语言SQL,则也可以在属性窗或代码中把它设置为一个SQL查询。

  二、Data控件的方法

  “方法”可以完成直接利用Data控件四个按钮无法完成的功能。Data控件的方法主要是移动、查找和修改三大类。这些操作是通过Data控件初始时所创建的记录集(Recordset)来完成的。

  移动类方法类似Foxbase中移动记录指针,把所指记录变为当前记录。例如:按CmdPrevious、CmdNext命令按钮后对应向前或向后移动纪录指针:

  Private Sub CmdPrevious—Click()

  Data1.Recordset.Previous ′ 把当前记录指向前一个

  If Data1.Recordset.BOF then ′ 如果已经指向到首记录的前一位置

  Data1.Recordset.MoveFirst ′ 则要指向到首记录,以防超出记录集

  End If

  End Sub

  Private Sub CmdNext—Click()

  Data1.Recordset.Next   ′ 把当前记录指向后一个

  If Data1.Recordset.EOF then ′ 如果已经指向到末记录的后一位置

  Data1.Recordset.MoveLast ′ 则要指向到末记录,以防超出记录集

  End If

  End Sub

  BOF和EOF也是记录集的两个属性,标识当前记录位置是否在第一条记录之前或在最后一条记录之后。

  Find方法是用来查找记录集中的特定记录,格式为:Recordset.FindFirst 表达式。表达式中可用普通的运算符,还可用Like运算符查找匹配某个模式的记录。比如想查询记录集姓名字段中是否包含“潘”姓的人员,可加入代码:

  Data1.Recordset.FindFirst ”姓名 LIKE ′潘*′"

  If data1.Recordset.NoMatch then

  MsgBox "无法找到匹配的记录"

  Else

  MsgBox "已经找到匹配的记录"

  EndIf

  NoMatch是记录集的另一个属性,用来标志是否找到指定的记录,如果指定的记录未找到则值为True,否则为False。  

相关文章

回到顶部
请复制以下网址分享
非编程方式访问数据库
http://m.civilcn.com/cehui/chlw/1357371125172117.html