OnPostFind - DataDictionary

The messages OnPreFind and OnPostFind are sent before a find and after a find, respectively

Type: Event

Parameters: Integer eMessage Boolean bFound

ParameterDescription
eMessageThe Find operation type. Legal values are:

ConstantMeaning
DDFindRequestFindRequest_Find
DDFindFindByRowRecFindByRow,Find_By_Recnum
DDFindRequestAssignRequest_Assign
DDFindClearClear (not Clear_All)

bFoundWas the Find operation successful


Syntax
Procedure OnPostFind Integer eMessage Boolean bFound

Description

The messages OnPreFind and OnPostFind are sent before a find and after a find, respectively.


Be sure to check not just the bFound parameter, but also the operation type (eMessage). For example, When a clear occurs, the parameter passed indicates a successful clear (a successful find nothing).

Procedure OnPostFind Integer eMessage Boolean bFound

   Forward Send OnPostFind eMessage bFound

   If (eMessage<> DDFindClear and bFound) Begin
       Send doSomethingIfRecordIsFound
    End
End_Procedure



The significance of these messages:

1. All Find operations (Request_Find, FindByRowId, Find_By_Recnum, Request_Assign and Clear) are sent to a single place.

2. These are called before or after the actual Find, so the Data Dictionaries are not busy, which means you can send other DD messages within these (no reentrancy issues).

3. These are sent to the DD that owns the finding table. It is possible to send these messages to child objects asking for a parent find. In such a case, these events are sent to the owner (the parent) and not the DD that happened to get the message. You are sure that that DD getting the message is the DD for that table.