備考
この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