備考
AddNew操作が開始されるとき、ダイナセット内のフィールドの値はコピー・バッファ内に保持され、データベースの実際の内容には反映されません。
フィールドの値は、OraFieldオブジェクトを介して変更され、Update操作時またはデータベース内で移動が発生した際にコミットされて、新しい行が破棄されます。明示的に割り当てられていないフィールド値は、OpenDatabaseメソッドがコールされたときに使用されたオプション・フラグの列デフォルト・モードに応じて、Nullに設定されるか、またはOracleのデフォルト・メカニズムによってデフォルト値に設定できます。いずれの場合も、データベース表には存在し、ダイナセットには存在しないフィールドは、Oracleのデフォルト・メカニズムによって常にデフォルト値に設定されます。
レコードは、内部的には"INSERT into TABLE (...) VALUES (...)" SQL文を使用してAddNewメソッドによって挿入され、表の最後に追加されます。
オブジェクト型、コレクション型およびREF型の列を含んだ行を追加する場合は、これらの型の列値として有効なOraObject、OraCollectionまたはOraRefインタフェース、あるいはNULL値を設定してください。この列値は、CreateOraObjectメソッドによって戻されるオートメーション・オブジェクトを使用して設定することもできます。BLOB、CLOBまたはBFILEの列を含んだ行を追加する場合は、これらの型の列値として有効なOraBLOB、OraCLOBまたはOraBFILEインタフェース、NULL、あるいはEmptyを設定してください。BLOB、CLOBおよびBFILE型の列にEmpty値を設定すると、データベースに空のLOB値が挿入されます。
|
注意: Edit、AddNewまたはDeleteメソッドのコールでは、未処理のEditまたはAddNewメソッドのコールは処理前に取り消されます。Updateメソッドを使用して保存されていない未処理の変更は、すべて取消処理中に失われます。 |
例
この例では、AddNewおよび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&)
'Begin an AddNew.
OraDynaset.AddNew
'Set the field(column) values.
OraDynaset.Fields("EMPNO").Value = "1000"
OraDynaset.Fields("ENAME").Value = "WILSON"
OraDynaset.Fields("JOB").Value = "SALESMAN"
OraDynaset.Fields("MGR").Value = "7698"
OraDynaset.Fields("HIREDATE").Value = "19-SEP-92"
OraDynaset.Fields("SAL").Value = 2000
OraDynaset.Fields("COMM").Value = 500
OraDynaset.Fields("DEPTNO").Value = 30
'End the AddNew and Update the dynaset.
OraDynaset.Update
MsgBox "Added one new employee."
End Sub