適用対象
説明
データ・コントロールのRecordSetを作成するために使用されるSQL SELECT文。設計時および実行時に読取り/書込みができます。
使用方法
oradata1.RecordSource = [ SQL SELECT Statement ]
データ型
String
備考
このSQL文はSELECT文である必要があり、そうでない場合はエラーが返されます。ビュー、シノニム、列の別名、スキーマ参照、表の結合、ネストしたSELECT文、リモート・データベース参照などの機能を自由に使用でき、オブジェクト名はいかなる方法でも変更されません。
結果のダイナセットが更新可能かどうかは、Oracle SQLの更新可能性規則、付与されているアクセス権、およびReadOnlyプロパティによって決まります。更新可能にするには、次の3つの条件を満たす必要があります。
SQL文が単純な列リストまたは列リスト全体(*)を参照すること。
SQL文でオプション引数の読取り専用フラグを設定しないこと。
Oracleで、問合せで選択された行へのROWID参照を許可していること。
これらの条件を満たさないSQL文でも処理されますが、その結果は更新可能ではなく、ダイナセットのUpdatableプロパティでFalseが戻されます。
このプロパティへの変更は、Refreshメソッドがデータ・コントロールに送信された後に有効になります。
SQLのバインド変数は、OraParametersコレクションと組み合せて使用できます。
このプロパティがNULLまたは空の場合、OraDynasetオブジェクトは作成されませんが、データ・コントロール用にOraSession、OraConnectionおよび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