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

前
 
次
 

Refreshメソッド

説明

現行のConnectDatabaseNameおよびSQLプロパティについて、ダイナセットをただちに更新します。

SQL文オブジェクト内のSQL文を再実行することによって、ダイナセットをただちに更新します。

使用方法

oradynaset.Refresh
oradynaset.DbRefresh  
orasqlstmt.Refresh
orasqlstmt.DbRefresh

備考

このメソッドは、すべての編集操作(EditおよびAddNewメソッド)を取り消して、SQL文バッファの現在の内容を実行し、結果のダイナセットの最初の行に移動します。Refreshメソッドの発行前に作成されたダイナセット・オブジェクト(ブックマーク、レコード・カウントおよびフィールド・コレクションなど)は無効とみなされます。以前のダイナセットに関連付けられているOraConnectionおよびOraSessionオブジェクトは変更されずにそのまま残ります。

このメソッドを使用してリフレッシュ操作を実行した方が、データ・コントロールによるリフレッシュより効率的です。また、このメソッドを使用すると、変更したSQL文を新しいダイナセットまたはOraSQLStmtオブジェクトを作成せずに実行できます。

必要なデータベース操作(SQLの解析やバインドなど)が最小限に抑えられるため、oradynaset.Refreshまたはorasqlstmt.Refreshは、パラメータ値の変更に役立つリフレッシュ・メソッドです。このメソッドは、パラメータの値のみを変更した場合にパフォーマンスを向上できます。

ダイナセットまたはSQL文オブジェクトのSQLプロパティに無効なSQL文を割り当てた後にRefreshメソッドをコールした場合、これらのオブジェクトは有効なままです。ただし、このような状態のダイナセットでは、行またはフィールドに対するあらゆる操作は許可されません。また、バインド済コントロールも、標準Visual Basicデータ・コントロールのRecordSourceが実行時に無効なSQL文に設定され、その後リフレッシュされた場合に見られるような不適切な動作をします。

有効なSQL文を使用してオブジェクトをリフレッシュすると、通常のダイナセットとSQL文の操作に戻ります。Refreshメソッドは、NULLまたは空のSQL文を無効とみなします。

Refreshメソッドの例(OraDynaset)

この例では、パラメータ、RefreshメソッドおよびSQLプロパティを使用して選択レコードを制限する方法を示します。このコードをコピーして、フォームの定義セクションに貼り付けてください。次に[F5]を押します。

Sub Form_Load ()
 
 'Declare variables 
 Dim OraSession As OraSession 
 Dim OraDatabase As OraDatabase 
 Dim OraDynaset As OraDynaset 
 
 'Create the OraSession Object.
 Set OraSession = CreateObject("OracleInProcServer.XOraSession")
 
 'Create the OraDatabase Object by opening a connection to Oracle.
 Set OraDatabase = OraSession.OpenDatabase("ExampleDb", "scott/tiger", 0&)
 
 'Create a parameter with an initial value.
 OraDatabase.Parameters.Add "job", "MANAGER", 1
 
 'Create the OraDynaset Object.
 Set OraDynaset =OraDatabase.CreateDynaset("select * from emp where job=:job",0&)
 
 'Notice that the SQL statement is NOT modified.
 MsgBox OraDynaset.SQL
 
 'Currently, OraDynaset only contains employees whose job is MANAGER.
 'Change the value of the job parameter.
 
 OraDatabase.Parameters("job").Value = "SALESMAN"
 
 'Refresh the dynaset.
 OraDynaset.Refresh
 
 'Currently, OraDynaset only contains employees whose job is SALESMAN.
 'Notice that the SQL statement is NOT modified.
 MsgBox OraDynaset.SQL
 
 'Remove the parameter.
 OraDatabase.Parameters.Remove ("job")
 
 End Sub

Refreshメソッドの例(OraSQLStmt)

この例では、パラメータ、Refreshメソッド、およびオブジェクトのSQLプロパティの使用方法を示します。このコードをコピーして、フォームの定義セクションに貼り付けてください。次に[F5]を押します。

Sub Form_Load ()
 
 'Declare variables
 Dim OraSession As OraSession 
 Dim OraDatabase As OraDatabase 
 Dim OraSqlStmt As OraSQLStmt 
 
 'Create the OraSession Object.
 Set OraSession = CreateObject("OracleInProcServer.XOraSession")
 
 'Create the OraDatabase Object by opening a connection to Oracle.
 Set OraDatabase = OraSession.OpenDatabase("ExampleDb", "scott/tiger", 0&)
 
 OraDatabase.Parameters.Add "EMPNO", 7369, 1
 OraDatabase.Parameters("EMPNO").ServerType = 2  'ORATYPE_NUMBER  
 OraDatabase.Parameters.Add "ENAME", 0, 2
 OraDatabase.Parameters("ENAME").ServerType = 1  'ORATYPE_VARCHAR2  
 
 Set OraSqlStmt = OraDatabase.CreateSQL("Begin Employee.GetEmpName (:EMPNO," & _
              ":ENAME); end;", 0&) 
 
 'Notice that the SQL statement is NOT modified.
 MsgBox OraSqlStmt.SQL
 
 'Should display SMITH
 MsgBox OraDatabase.Parameters("ENAME").Value  
 
 'Change the value of the empno parameter.
 OraDatabase.Parameters("EMPNO").Value = 7499
 
 'Refresh the dynaset.
 OraSqlStmt.Refresh
 
 'Should display ALLEN
 MsgBox OraDatabase.Parameters("ENAME").Value   
 
 'Notice that the SQL statement is NOT modified.
 MsgBox OraSqlStmt.SQL 
 
 'Remove the parameter.
 OraDatabase.Parameters.Remove ("job")
 
 End Sub