1

我正在尝试构建一个包含多个 Recordset 的 Recordset 对象。我正在尝试使用 .NextRecordset 方法来执行此操作,但我遇到了麻烦。具体来说,我Current provider does not support returning multiple recordsets from a single execution.在执行.NextRecordset方法时遇到错误。

Dim oRs As ADODB.Recordset
Set oRs = New ADODB.Recordset
oRs.CursorLocation = adUseClient

oRs.Fields.Append "hello1", adVarChar, 100, adFldUpdatable
oRs.Fields.Append "hello2", adVarChar, 100, adFldUpdatable

oRs.Open , , adOpenStatic, adLockOptimistic
oRs.AddNew
oRs.Fields("hello1") = "234"
oRs.Fields("hello2") = "234"

Set oRs = oRs.NextRecordset       ' BLOWS UP
'  Add some columns + rows to this recordset

额外的复杂性是我需要在 C# 中执行此操作(通过 Interop),但我很乐意首先在 VB6 中解决它。

那么,有没有可能做我想做的事?

4

1 回答 1

1

我认为最接近您想要的东西是ADO中的分层记录集。这些可以深入多个级别,或者只是两个级别(一个记录集连续章节字段),如您的请求:

无论父 Recordset 以何种方式形成,它都将包含一个章节列,用于将其与子 Recordset 相关联。如果您愿意,父 Recordset 还可能具有包含子行上的聚合(SUM、MIN、MAX 等)的列。父记录集和子记录集都可能具有包含记录集中行上的表达式的列,以及新的且最初为空的列。

您可以将分层 Recordset 对象嵌套到任何深度(即,创建子 Recordset 对象的子 Recordset 对象,等等)。

您可以通过编程方式或通过适当的可视控件访问成形 Recordset 的 Recordset 组件。

这样做的关键是使用 Data Shaping Service,这是一个 OLEDB 提供程序,它“骑在”您的基础提供程序之上(即使在使用客户端游标时仅隐含本地游标服务提供程序)。

在How To Create Hierarchical Recordsets Programmatically Support 一文中可以找到一些描述和粗略的示例。

更多详细信息和参考资料可以在Data Shaping中找到,包括用于定义 Shape 命令的类似 SQL 的语言。


或者您是在询问分页记录集,例如在PageSize 属性 (ADO)中?

于 2013-04-20T10:59:26.907 回答