適用対象
説明
コピー・バッファにデータをコピーすることによって、現在の行の編集操作を開始します。
使用方法
oradynaset.Edit oradynaset.DbEdit
備考
Editメソッドでは、ローカルにキャッシュされたデータがOracle Databaseの対応する行と比較されます。Oracle Databaseのデータが、参照中のデータと同じでない場合は、エラーが生成されます。この操作が成功すると、行は"SELECT ... FOR UPDATE"文を使用してロックされ、Updateメソッドによる編集が完了するまで、または進行中の編集を破棄するようなデータベース内での移動が発生するまでロックされた状態になります。"SELECT ... FOR UPDATE"文の動作は、OpenDatabaseメソッドがコールされたときに使用されたオプション・フラグのLock Waitモードの影響を受けます。
|
注意: キャッシュされたデータは、BLOB、CLOB、Object、REFおよびコレクション型についてはデータベースと比較されず、無関係に更新されます(内容を保障しない書込み)。 |
編集中は、フィールドへの変更はシャドウであるコピー・バッファに保持され、データベースの実際の内容には反映されません。ただし、編集操作を行っている間、行への参照には、新しく変更されたデータが戻されます。
このダイナセットに付加されているデータ・コントロール内でデータを変更した場合は、次のレコード移動時にEditメソッドが自動的にコールされます。そのため、このメソッドが必要になるのは、コード内のフィールド・データを変更するときのみです。
|
注意: Edit、AddNewまたは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