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# で (相互運用機能を介して) 行う必要があることですが、最初に VB6 で理解できれば幸いです。

それで、私がやりたいことをすることは可能ですか?

4

1 に答える 1

1

あなたが望むものに最も近いのは、ADOの階層レコードセットだと思います。これらは、要求のように、複数レベルの深さ、または 2 つのレベル (Chapter フィールドを継続する Recordset) にすることができます。

親 Recordset の形成方法に関係なく、子 Recordset に関連付けるために使用されるチャプタ列が含まれます。必要に応じて、親 Recordset に、子行の集計 (SUM、MIN、MAX など) を含む列を含めることもできます。親と子の両方の Recordset に、Recordset 内の行の式を含む列と、新しい最初は空の列がある場合があります。

階層 Recordset オブジェクトを任意の深さまで入れ子にすることができます (つまり、子 Recordset オブジェクトの子 Recordset オブジェクトを作成するなど)。

シェイプされた Recordset の Recordset コンポーネントには、プログラムまたは適切なビジュアル コントロールを介してアクセスできます。

これの鍵は、Data Shaping Service を使用することです。これは、基になるプロバイダーの「上に乗る」OLEDB プロバイダーです (クライアント側のカーソルを使用するときにローカルのカーソル サービス プロバイダーのみが暗示されている場合でも)。

いくつかの説明と大まかな例は、How To Create Hierarchical Recordsets Programmatically Support 記事に記載されています。

Shape コマンドの定義に使用される SQL に似た言語など、詳細と参考資料はData Shapingにあります。


それとも、代わりにPageSize プロパティ (ADO)のように、ページ化されたレコードセットについて質問していますか?

于 2013-04-20T10:59:26.907 に答える