OAdvise

The OAdvise class enables you to set up callbacks that attach to a dynaset. When operations occur on the dynaset attached OAdvise instances are notified of the operations. You will not declare any instances of OAdvise yourself. Instead, you write a new class that is a subclass of OAdvise, and your subclass then receives calls to its methods. OAdvise is a subclass of OOracleObject.

When an operation occurs on a dynaset, the dynaset

Calls all attached advisories before the operation occurs and allows them to veto the operation; and

Calls all attached advisories after the operation to tell them that it occurred.

In addition, when the status of the dynaset changes, it notifies the advisory. In this release, the only dynaset status change is that which occurs when the dynaset has found the last record.

The advisories are given a message that tells them what is happening. These messages are one of three types: navigational advisories, other advisories, and status changes. The specific defines are as follows:

// navigation advisories

OADVISE_MOVE_FIRST

OADVISE_MOVE_PREV

OADVISE_MOVE_NEXT

OADVISE_MOVE_LAST

OADVISE_MOVE_TOMARK // move to mark

// other advisories

OADVISE_REFRESH // dynaset being refreshed

OADVISE_DELETE // record being deleted

OADVISE_ADDNEW // new record being added

OADVISE_UPDATE // dynaset being updated

OADVISE_ROLLBACK // session being rolled back

OADVISE_OTHER // undefined advisories

// status changes

OADVISE_FOUNDLAST // dynaset knows that the last record has been read

The ActionRequest method is called before the operation. The advisory can cancel an operation by returning FALSE from the ActionRequest method; it must return TRUE from ActionRequest to allow the operation. The ActionNotify method is called after the operation. The StatusChange method is called when the dynaset status changes.

The OAdvise class does nothing. Its ActionRequest method always returns TRUE. To obtain other behavior, create a subclass of OAdvise and override the ActionRequest, ActionNotify, and StatusChange methods. Declare an instance of your subclass, and then open it to attach it to a dynaset.

It is often useful for your subclass to have its own members for reference to some sort of application context. You can add these, along with methods to set the context, in your own class. An example of an OAdvise subclass is provided in the Workbook.