vb基础 vb实例教程 api调用 控件使用 经验技巧 数据库操作 算法及技术 vb源码下载
  杀毒频道 | 短信频道 | 网络电视 | 论文中心 | 学上网 | 学软件 | 网页特效 | 电脑基础 | 返回首页  
  NCRE | 软考 | CET | 职称英语 | 司法考试 | 报关员 | 公务员 | CATTI | CPA考试  
  Html教程 | Css教程 | Xml教程 | Asp教程 | Asp.net | Php教程 | Jsp教程 | Linux教程 | QQ技巧  
Photoshop Illustrator ImageReady Maya教程 3D Max教程 Lightscape Coredraw教程 Authorware Autocad教程 Freehand教程
Access教程 Mysql教程 Sql server Oracle教程 Word教程 Excel教程 Powerpoint Frontpage Asp.net源码 Php源代码
Flash教程 Fireworks Dreamweaver C#教程 outlook教程 系统安装 vbscript教程 Javascript Jsp源代码 Asp源代码
您的位置:首页 >> vb教程

DAO介绍(四)
文章来源:vb大世界

5)缺省的记录集类型

DAO 能够根据记录集的数据源类型,以及打开记录集的方式,自动地设置缺省的记录集类型。因此,一般不需要指定记录集类型。然而,可以在 OpenRecordset 方法中指定 type 参数,以取消缺省的类型。
按照打开记录集的方式,下表中列出了可用的类型和缺省的类型。
■    使用 Database 对象的 OpenRecordset 方法:
    Set rstNew = dbs.OpenRecordset("Data Source")
   
    如果 Data Source 为数据库中的本地表,那么可以用表类型、动态集、快照和动态类型的 Recordset 对象,缺省的记录集类型为表类型。如果 Data Source 为其它类型,那么只能使用动态集和快照类型的 Recordset 对象,动态集类型为缺省的类型。
■    使用 TableDef 对象的 OpenRecordset 方法。
    Set rstNew = tdfTableData.OpenRecordset
   
    如果 tdfTableData 指的是 Microsoft Jet 数据库 (.mdb) 中的表,或者直接打开的 ISAM 数据库,那么所有的五种类型都是可用的,表类型的记录集为缺省的类型。如果 tdfTableData 在 ODBC 数据库中,或者是外部数据库中的链接表,那么只能用动态集和快照类型的 Recordset 对象,动态集类型为缺省类型。
■    使用 QueryDef 对象的 OpenRecordset 方法:
    Set rstNew = qdfQueryData.OpenRecordset
   
    只能使用动态集和快照类型的 Recordset 对象,动态集类型为缺省的类型。
■    使用现有的 Recordset 对象的 OpenRecordset 方法:
    Set rstNew = rstExisting.OpenRecordset
   
    只能使用动态集和快照类型的 Recordset 对象。缺省的类型为现有的记录集的类型,在上例中,即 rstExisting 的类型。

6)具体创建Recordset对象的例子

在下面的例子中可能用到一些还未讲到的东西,但由于使用的比较简单,相信大家还是能够理解。
①以表为基础创建记录集
用基本表创建 Recordset 对象的方法,取决于该表对于当前数据库是本地表,还是位于另一个数据库中的链接表。
   
用本地 Microsoft Jet 数据库中的表创建记录集
下列程序代码使用 OpenRecordset 方法为一个表创建了表类型的 Recordset 对象:
Dim dbs As Database, rstCustomers As Recordset

Set dbs = OpenDatabase("Northwind.mdb")
Set rstCustomers = dbs.OpenRecordset("Customers")
   
请注意,创建表类型的记录集时无需使用 dbOpenTable 常数。如果省略了 type 常数,DAO 将根据数据源和用来创建记录集的对象的类型,选择最适当的 Recordset 对象类型。当从本地表打开记录集时,可以使用表类型的记录集,DAO 将使用它。
②用其它数据库格式的链接表创建记录集
下列程序段为链接的 Paradox 3.x 表创建了一个动态集类型的 Recordset 对象。当从非 Microsoft Jet 数据库中的链接表打开记录集时,表类型是不能使用的,因此,DAO 的使用效率仅次于它的动态集类型。
Dim dbs As Database
Dim tdfNonJetLinked As TableDef
Dim rstTableData As Recordset

' 打开数据库并创建 TableDef。
Set dbs = OpenDatabase("Northwind.mdb")
Set tdfNonJetLinked = dbs.CreateTableDef("PDXAuthor")

' 连接到名为 Author 的 Paradox 表,该表位于数据库
' C:\PDX\Publish。
tdfNonJetLinked.Connect = _
    "Paradox 3.X;DATABASE=C:\PDX\Publish"
tdfNonJetLinked.SourceTableName = "Author"

' 链接该表。
dbs.TableDefs.Append tdfNonJetLinked

' 为该表创建动态集类型的记录集。
Set rstTableData = tdfNonJetLinked.OpenRecordset()
   
如果先打开 Paradox 数据库,则可直接打开 Paradox 表。

③以查询为基础创建记录集
也可以基于存储的选择查询来创建 Recordset 对象。在下例中,“Current Product List”是保存在当前数据库中的一个选择查询。
Dim dbs As Database, rstProducts As Recordset

Set dbs = OpenDatabase("Northwind.mdb")
Set rstProducts = dbs.OpenRecordset _
    ("Current Product List")
   
如果当前并不存在存储的选择查询,OpenRecordset 方法允许使用 SQL 字符串代替查询名。上例可以改写为以下程序段:
Dim dbs As Database, rstProducts As Recordset
Dim strQuerySQL As String

Set dbs = OpenDatabase("Northwind.mdb")
strQuerySQL = "SELECT * FROM Products " _
    & "WHERE Discontinued = No " _
    & "ORDER BY ProductName;"
Set rstProducts = dbs.OpenRecordset(strQuerySQL)
   
这种方法的缺点在于,每次运行时都需要先编译查询字符串,而存储的查询只是在首次保存时编译一次,所以性能较佳。
注意 如果在 Microsoft Jet 中用 SQL 字符串或者存储的查询创建 Recordset 对象,那么,在查询返回了记录集的第一行以后,程序才会继续运行。在查询运行的时候,最好在状态栏中显示出适当的消息。如果使用 ODBCDirect,可以指定 dbRunAsync,它使查询在后台执行,应用程序能够继续执行其它语句。

[返回]

编程语言 web开发 数据库 网络技术 操作系统 服务器 网页设计 图形设计 办公软件 常用软件 学电脑

Copyright© www.bianceng.cn Powered by 编程入门网 All Rights Reserved.
关于本站 | 版权声明 | 联系我们 | 友情链接 |
编程入门网 版权所有