ヘッダーをスキップ
Oracle® Objects for OLE開発者ガイド
11gリリース2 (11.2) for Microsoft Windows
B58887-04
  目次へ移動
目次
索引へ移動
索引

前
 
次
 

RecordSourceプロパティ

適用対象

Oracle Data Control

説明

データ・コントロールのRecordSetを作成するために使用されるSQL SELECT文。設計時および実行時に読取り/書込みができます。

使用方法

oradata1.RecordSource = [ SQL SELECT Statement ]

データ型

String

備考

このSQL文はSELECT文である必要があり、そうでない場合はエラーが返されます。ビュー、シノニム、列の別名、スキーマ参照、表の結合、ネストしたSELECT文、リモート・データベース参照などの機能を自由に使用でき、オブジェクト名はいかなる方法でも変更されません。

結果のダイナセットが更新可能かどうかは、Oracle SQLの更新可能性規則、付与されているアクセス権、およびReadOnlyプロパティによって決まります。更新可能にするには、次の3つの条件を満たす必要があります。

  1. SQL文が単純な列リストまたは列リスト全体(*)を参照すること。

  2. SQL文でオプション引数の読取り専用フラグを設定しないこと。

  3. Oracleで、問合せで選択された行へのROWID参照を許可していること。

これらの条件を満たさないSQL文でも処理されますが、その結果は更新可能ではなく、ダイナセットのUpdatableプロパティでFalseが戻されます。

このプロパティへの変更は、Refreshメソッドがデータ・コントロールに送信された後に有効になります。

SQLのバインド変数は、OraParametersコレクションと組み合せて使用できます。

このプロパティがNULLまたは空の場合、OraDynasetオブジェクトは作成されませんが、データ・コントロール用にOraSessionOraConnectionおよびOraDatabaseオブジェクトが作成されます。この動作により、ダイナセットの作成の前に、これらのオブジェクトへのアクセスが可能になります。たとえば、NULL RecordSourceを使用し、データベース・オブジェクトをインスタンス化してパラメータを追加できます。その後、RecordSourceプロパティを、データベース・パラメータの自動バインディングを使用して実行時に設定できます。

このプロパティの変更およびRecordSetプロパティのRefreshメソッドのコールにより、新規のダイナセット・オブジェクトが作成されますが、古いダイナセットも、そのダイナセットへの参照がすべて削除されるまで、引き続き使用できます。

この例では、データ・コントロールのRecordSourceプロパティのSQLバインド変数(パラメータ)の使用方法を示します。この例を実行するには、oradata1という名前のデータ・コントロールを含むフォームの定義セクションにコードをコピーし、その後[F5]を押します。

Sub Form_Load ()
 
 'Set the username and password.
 oradata1.Connect = "scott/tiger"
 
 'Set the databasename.
 oradata1.DatabaseName = "ExampleDb"
 
 'Refresh the data control without setting the
 ' RecordSource. This has the effect of creating
 
 ' the underlying database object so that parameters  may be added.
 oradata1.Refresh
 
 'Set the RecordSource and use a SQL parameter.
 oradata1.RecordSource = "select * from emp where job = :job"
 
 'Add the job input parameter with initial value MANAGER.
 oradata1.Database.Parameters.Add "job", "MANAGER", 1
 
 'Refresh the data control.
 'Only employees with the job MANAGER will be contained in the dynaset.
 oradata1.Refresh
 
 'Change the value of the job parameter to SALESMAN.
 oradata1.Database.Parameters("job").Value = "SALESMAN"
 
 'Refresh ONLY the recordset.
 'Only employees with the job SALESMAN will be contained in the dynaset.
 oradata1.Recordset.Refresh
 
End Sub