備考
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