Vb6 如何构造包含多个记录集的记录集对象?

Vb6 如何构造包含多个记录集的记录集对象?,vb6,Vb6,我正在尝试构造一个记录集对象,其中包含多个记录集。我正在尝试使用.NextRecordset方法来执行此操作,但遇到了问题。具体地说,我获取当前提供程序不支持从一次执行返回多个记录集。执行时出错。NextRecordset方法 Dim oRs As ADODB.Recordset Set oRs = New ADODB.Recordset oRs.CursorLocation = adUseClient oRs.Fields.Append "hello1", adVarChar, 100, a

我正在尝试构造一个记录集对象,其中包含多个记录集。我正在尝试使用.NextRecordset方法来执行此操作,但遇到了问题。具体地说,我获取
当前提供程序不支持从一次执行返回多个记录集。
执行
时出错。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#(通过互操作)中完成这项工作,但我很乐意首先在VB6中解决这个问题


那么,有可能实现我想要的吗?

我认为最接近您想要的是ADO中的分层记录集。这些可以深入到多个级别,也可以只深入到两个级别(包含章节字段的记录集),如您的请求所示:

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

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

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

关键是使用数据整形服务,这是一个OLEDB提供程序,它“位于”基础提供程序之上(即使在使用客户端游标时仅暗示本地游标服务提供程序)

在支持文章中可以找到一些描述和粗略的示例

有关更多详细信息和参考资料,请访问,包括用于定义形状命令的类似SQL的语言



或者您是在询问分页记录集,如中所示?

我认为最接近您想要的是ADO中的分层记录集。这些可以深入到多个级别,也可以只深入到两个级别(包含章节字段的记录集),如您的请求所示:

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

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

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

关键是使用数据整形服务,这是一个OLEDB提供程序,它“位于”基础提供程序之上(即使在使用客户端游标时仅暗示本地游标服务提供程序)

在支持文章中可以找到一些描述和粗略的示例

有关更多详细信息和参考资料,请访问,包括用于定义形状命令的类似SQL的语言



或者你问的是分页记录集,比如“记录集对象中包含多个记录集”。呃,我相信这样的结构根本不存在。或者我误解了你的意图
oRS.NextRecordset
不是“从这个记录集中给我一个记录集”。而是“亲爱的提供商,请给我下一个记录集”。如果你能透露更多的总体目标,也许会有所帮助。@IlyaKurnosov你说得对。本质上,我想复制.NET数据集(例如,一个包含多个DataTable对象的集)。@AngryHacker-换句话说,你想要某种包含多个记录集的超级记录集?那么一组记录集呢?这会给你你想要的功能吗?@Tim,这会起作用,但是这个库的客户端需要一个“超级”记录集。“记录集对象里面有多个记录集。”呃,我相信这样的构造根本不存在。或者我误解了你的意图
oRS.NextRecordset
不是“从这个记录集中给我一个记录集”。而是“亲爱的提供商,请给我下一个记录集”。如果你能透露更多的总体目标,也许会有所帮助。@IlyaKurnosov你说得对。本质上,我想复制.NET数据集(例如,一个包含多个DataTable对象的集)。@AngryHacker-换句话说,你想要某种包含多个记录集的超级记录集?那么一组记录集呢?这会为您提供您所需要的相同功能吗?@Tim这会起作用,但此库的客户端需要一个“超级”记录集。听起来这是一个有趣的想法,但此库的调用方应用程序需要一个可以通过.NextRecordset方法迭代的标准记录集对象。我想您当时被卡住了。ADO文档非常清楚地指出,“NextRecordset方法在断开连接的记录集对象上不可用。”听起来是一个有趣的想法,但此库的调用方应用程序希望有一个标准记录集对象,可以通过.NextRecordset方法进行迭代。我想你当时被卡住了。ADO文档非常清楚地指出,“NextRecordset方法在断开连接的记录集对象上不可用。”