Try OpenEdge Now
skip to main content
Updating Data with ProDataSets : Processing changes : ACCEPT-CHANGES and ACCEPT-ROW-CHANGES methods


There is an ACCEPT-CHANGES method on the ProDataSet handle, and the ProDataSet temp-table buffer handle, which effectively tells the AVM that any changes tracked in the before-table(s) have been processed and those records should be accepted as the new origin ProDataSet versions. The method can be executed on the ProDataSet handle or a temp-table buffer handle in the origin ProDataSet.
If the method is executed on the ProDataSet, then all before-tables in the ProDataSet are emptied, and the pointers to those records in the after-table are removed so that the BEFORE-ROWID attribute of every record in the after-tables is the Unknown value (?) and the ROW-STATE of every record in the after-tables is set to ROW-UNMODIFIED(0). The before-tables are not deleted, only emptied for possible later use.
If ACCEPT-CHANGES is executed on a temp-table buffer handle, then it is applied only to that temp-table and its after-table. It is equally possible to execute APPLY-CHANGES on the after-table handle, in which case it applies to that table and its before-table, and the result is the same. However, you should normally ACCEPT-CHANGES on the before-table buffer, since that is the table that holds a record of every change and nothing else.
There is a separate ACCEPT-ROW-CHANGES method for the buffer handle, which executes only on the current row in the buffer. It is applied only to that one record in the table and its corresponding record in the other table. ROW-ACCEPT-CHANGES can be executed only on the before-table buffer handle of the temp-table in the origin ProDataSet. This is the syntax for the ACCEPT-ROW-CHANGES method:


These methods effectively reset the ProDataSet, temp-table, or row so its current state is as if a FILL was just executed.