非パラメーター化コマンドの操作
パラメーター化されていないコマンドの場合、すべてのプロバイダー コマンドが実行され、コマンドの実行中に Recordset が作成されます。 コマンドを同期的に実行すると、すべての Recordsets が完全に設定されます。 非同期作成モードが選択されている場合、Recordsets の設定された状態は、作成モードと Recordsets のサイズによって異なります。
たとえば、"親コマンド" は Customers テーブルから会社の顧客の Recordset を返し、"子コマンド" は Orders テーブルからすべての顧客の注文の Recordset を返すことができます。
SHAPE {SELECT * FROM Customers}
APPEND ({SELECT * FROM Orders} AS chapOrders
RELATE customerID TO customerID)
パラメーター化されていない親子リレーションシップの場合、各親と子の Recordset オブジェクトには、それらを関連付けるための共通の列が必要です。 列の名前は RELATE 句で、"親列" は最初に、次に "子列" に名前が付けられます。 各 Recordset オブジェクト内の列の名前は異なる場合がありますが、意味のあるリレーションを指定するには、同じ情報を参照する必要があります。 たとえば、Customers オブジェクトと Orders Recordset オブジェクトの両方に customerID フィールドを指定できます。 子 Recordset のメンバーシップはプロバイダー コマンドによって決定されるため、子 Recordset には孤立行を含めることができます。 これらの孤立行は、追加の再シェーピングなしでアクセスできません。
データ シェイプは、親 Recordset にチャプター列を追加します。 チャプター列の値は、RELATE 句を満たす子 Recordset 内の行への参照です。 つまり、チャプターの子のすべての行の "子列" にあるものと同じ値が、特定の親行の "親列" にあります。 同じ RELATE 句で複数の TO 句を使用する場合、AND 演算子を使用して暗黙的に結合されます。 RELATE 句の親列で親 Recordset のキーが構成されていない場合、1 つの子行に複数の親行を含めることができます。
チャプター列の参照にアクセスすると、ADO は参照によって表される Recordset を自動的に取得します。 パラメーター化されていないコマンドでは、子 Recordset 全体が取得されていますが、チャプターには行のサブセットのみが表示されることに注意してください。
追加された列に "チャプター エイリアス" がない場合は、自動的に名前が生成されます。 列の Field オブジェクトが Recordset オブジェクトの Fields コレクションに追加され、そのデータ型が adChapter になります。
階層レコードセットの移動の詳細については、階層レコードセット内の行へのアクセスに関するページを参照してください。