什么是数据集属性?
发布网友
发布时间:2022-04-30 20:23
我来回答
共1个回答
热心网友
时间:2022-07-01 09:14
简单的说数据集(recordset)属性是指数据集的一些可以通过定义值而实现不同功能,这些值就是数据集属性。
返回或设置由 Data 控件的属性或由现有的 Recordset 对象所定义的 Recordset 对象。
语法
Set object.Recordset [= value ]]
Recordset 属性的语法具有这些部分:
对部分 描述
object 对象表达式,其值是“应用于”列表中的对象。
value 一个包含 Recordset 对象的对象变量。
说明
当应用程序在初始的 Form_Load 过程之前启动时,Data 控件被自动地初始化。如果 Connect、DatabaseName、Options、RecordSource、Exclusive、ReadOnly 和 RecordsetType 属性是合法的,或者在运行时设置这些 Data 控件属性并使用 Refresh 方法,则 Microsoft Jet 数据库引擎试图创建一个新的基于那些属性的 Recordset 对象。此 Recordset 对象可通过 Data 控件的 Recordset 属性访问。不过,如果在设计时错误地设置若干个这些属性,则当 Visual Basic 试图使用该属性来打开特定的数据库并创建 Recordset 对象时,将产生一个不可捕获的错误。
可以象使用其它 Recordset 对象一样使用 Recordset 属性。例如,可以使用任何 Recordset 方法或属性,并检查 Recordset 对象的基本模式
也可以通过设置 Data 控件的 RecordsetType 属性而设置创建的 Recordset 的类型。如果不请求特定类型,则创建一个 dynaset 类型的 Recordset。使用 RecordsetType 属性可以请求创建表类型、快照类型或者 dynaset 类型的 Recordset。但是如果 Jet 引擎不能创建所请求的类型,则将产生一个可捕获的错误。
在许多情况下,所创建的 Recordset 对象的缺省类型和配置是极为低效的。也就是说,可能不需要可以更新的、可以全部滚动的、keyset 类型的光标来访问数据。例如,一个只读的快照类型的 Recordset 可能会比缺省的 Recordset 创建起来快得多。要确保尽可能选择最有效的 Type、Exclusive、Options 和 ReadOnly 属性。
可以在运行时通过检查 Recordset 属性的 Type 属性或 Data 控件的 RecordsetType 属性的方法来检查创建的 Recordset 的类型。但是请注意,用于创建的 Recordset 的类型的常数是不同的。例如:
If Data1.Recordset.Type = dbOpenDynaset Then ...
If Data1.RecordsetType = dbDynasetType Then ...
即使请求创建一个 dynaset 类型或表类型的 Recordset,Recordset 也可能是不可更新的。如果基本的数据库、表或字段是不可更新的,则所有或部分 Recordset 可能是只读的。检查 Database 和 Recordset 对象的 Updatable 属性或 Field 对象的 DataUpdatable 属性来确定程序代码是否可以改变记录。即使 DataUpdatable 属性返回 True,在某些情况下,基本的数据字段也不能更新,例如,没有足够的权限做出改变。其它因素也能阻止字段被更新。
Recordset 所返回的记录的个数可以通过在 Recordset 中移动到最后一个记录并检查 Recordset 对象的 RecordCount 属性的方法来确定。在移动到最后一个记录之前,RecordCount 属性所返回的值只反映 Jet 引擎处理过的行数。下面的例子说明可以怎样将 Recordset 的 RecordCount 属性和 Recordset 属性结合来显示 Data 控件的记录集中的记录的个数:
Data1.Recordset.MoveLast
MsgBox "Records: " & Data1.Recordset.RecordCount
专业版和企业版
如果使用代码或另一个 Data 控件创建 Recordset 对象,则可以将 Data 控件的 Recordset 属性设置为这个新的记录集。当新的 Recordset 被赋值给 Recordset 属性时,Data 控件中任何现有的 Recordset,以及与之相关的 Database 对象都被释放。
注意 当 Recordset 属性被设置时,Data 控件不关闭当前的 Recordset 或 Database,但它的确释放了它。如果没有其它用户,则该数据库被自动关闭。可能希望在使用 Close方法设置 Recordset 属性之前关闭同 Data 相关的 Recordset 和 Database。
要确保连接到 Data 控件上的被绑定控件的 DataField 属性的新的 Recordset 对象的字段名相匹配。
例如,用代码创建一个 Recordset 并将它传递到现有的 Data 控件:
Dim Db As Database, Rs As Recordset '定义为公用变量
Sub ApplyRecordset()
Set Db = Workspaces(0).OpenDatabase("BIBLIO.MDB")
Set Rs = Db.OpenRecordset("AUTHORS") 'Table 对象的缺省值
Set Data1.Recordset = Rs '为 Recordset 赋值
Data1.Recordset.Index = "PrimaryKey"
Debug.print Rs.Type ' 显示创建的类型
End Sub
可以使用这种技术来创建一个在 MDI 父窗体 上的单个的隐藏 Data 控件同另一个在 MDI 子窗体上的可见的 Data 控件的 MDI 父子数据连接。在 MDI 子 窗体的 Form_Load 事件中,将子 Data 控件的 Recordset 属性设置为父 Data 控件的 Recordset 属性。使用此技术使所有子窗体与其父窗体的被绑定的控件同步。
注意 Data 控件不支持只向前的 Recordset 对象。如果试图将一个只能向前的 Recordset 对象赋值给 Data 控件的 Recordset 属性,则将产生一个可捕获的错误。
除 ODBCDirect (DefaultType = dbUseODBC)Recordset 对象外,Data 控件所创建的所有 Recordset 对象都是在 v(0) 中创建的。如果需要使用 Data 控件来操作另一个 WorkSpace 中的数据库,请使用上述技术在所需的 Workspace 中打开数据库,创建新 Recordset 并将 Data 控件的 Recordset 属性设置为这个新 Recordset。
重点 总可以通过使用 Recordset 属性来引用 Data 控件的 Recordset 的属性。通过直接引用 Recordset,可以确定与 Table 对象一起使用的 Index、QueryDef 的 Parameters 集合或者 Recordset 的类型。