説明
現行のConnect
、DatabaseName
およびSQLプロパティについて、ダイナセットをただちに更新します。
SQL文オブジェクト内のSQL文を再実行することによって、ダイナセットをただちに更新します。
備考
このメソッドは、すべての編集操作(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