我正在尝试构建一个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中首先解决这个问题。
那么,有可能做我想做的事吗?
答案 0 :(得分:1)
我认为最接近你想要的是ADO中的 Hierarchical Recordset 。这些可以深入多个级别,或者只是两个级别(记录集合章节字段),如您的请求:
无论父Recordset的形成方式如何,它都将包含一个章节列,用于将其与子Recordset相关联。如果您愿意,父Recordset也可能包含子行上包含聚合(SUM,MIN,MAX等)的列。父Recordset和子Recordset都可能包含Recordset中行上包含表达式的列,以及new和最初为空的列。
您可以将分层Recordset对象嵌套到任何深度(即,创建子Recordset对象的子Recordset对象,等等)。
您可以通过编程方式或通过适当的可视控件访问整形Recordset的Recordset组件。
关键是使用数据整形服务,这是一种OLEDB提供程序,它“基于”您的底层提供程序(即使在使用客户端游标时只有本地游标服务提供程序隐含 )。
可以在How To Create Hierarchical Recordsets Programmatically支持文章中找到一些描述和粗略的例子。
可以在Data Shaping找到更多详细信息和参考资料,包括用于定义Shape命令的类SQL语言。
或者您是否在询问分页记录集,而不是PageSize Property (ADO)?