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

前
 
次
 

Editメソッド

説明

コピー・バッファにデータをコピーすることによって、現在の行の編集操作を開始します。

使用方法

oradynaset.Edit
oradynaset.DbEdit  

備考

Editメソッドでは、ローカルにキャッシュされたデータがOracle Databaseの対応する行と比較されます。Oracle Databaseのデータが、参照中のデータと同じでない場合は、エラーが生成されます。この操作が成功すると、行は"SELECT ... FOR UPDATE"文を使用してロックされ、Updateメソッドによる編集が完了するまで、または進行中の編集を破棄するようなデータベース内での移動が発生するまでロックされた状態になります。"SELECT ... FOR UPDATE"文の動作は、OpenDatabaseメソッドがコールされたときに使用されたオプション・フラグのLock Waitモードの影響を受けます。


注意:

キャッシュされたデータは、BLOBCLOBObjectREFおよびコレクション型についてはデータベースと比較されず、無関係に更新されます(内容を保障しない書込み)。

編集中は、フィールドへの変更はシャドウであるコピー・バッファに保持され、データベースの実際の内容には反映されません。ただし、編集操作を行っている間、行への参照には、新しく変更されたデータが戻されます。

このダイナセットに付加されているデータ・コントロール内でデータを変更した場合は、次のレコード移動時にEditメソッドが自動的にコールされます。そのため、このメソッドが必要になるのは、コード内のフィールド・データを変更するときのみです。


注意:

EditAddNewまたはDeleteメソッドをコールすると、未処理のEditまたはAddNewのコールは処理前に取り消されます。Update操作を使用して保存されていない未処理の変更は、すべて取消処理中に失われます。

この例では、EditおよびUpdateメソッドを使用して、データベース内の値を更新する方法を示します。このコードをコピーして、フォームの定義セクションに貼り付けてください。次に[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 the OraDynaset Object.
Set OraDynaset = OraDatabase.CreateDynaset("select * from emp", 0&)
 
 'Traverse until EOF is reached, settingeach employee's salary to zero
 Do Until OraDynaset.EOF
   OraDynaset.Edit
   OraDynaset.Fields("sal").value = 0
   OraDynaset.Update
   OraDynaset.MoveNext
 Loop
 MsgBox "All salaries set to ZERO."
 
End Sub