Try OpenEdge Now
skip to main content
ABL Reference
Handle Attributes and Methods Reference : RELATIONS-ACTIVE attribute
 

RELATIONS-ACTIVE attribute

Indicates whether all data-relation objects in a ProDataSet object are active or inactive. Set to TRUE to activate all data-relation objects. Set to FALSE to deactivate all data-relation objects. All data-relation objects in a ProDataSet object are active by default.
Alternatively, you can activate or deactivate an individual data-relation object in a ProDataSet object by setting the ACTIVE attribute on the Data-relation object handle.
Data type: LOGICAL
Access: Readable/Writeable
Applies to: ProDataSet object handle
Deactivate all data-relations in a ProDataSet object when you want a FILL operation to load data into each ProDataSet member buffer using the individual buffer's query (instead of recursively loading parent and child buffers as defined by the data-relations). Likewise, you can reactivate all data-relations in a ProDataSet object after completing a FILL operation to use the data-relations for traversing the data after the data is loaded.
When the AVM encounters an inactive relation (or the last child buffer in the relation tree), during a FILL operation on a ProDataSet buffer object handle, the AVM does not fill the child buffers of that relation. When the AVM encounters an inactive relation during a FILL operation on a ProDataSet object handle, it treats the first child buffer of the inactive relation as a top-level table (including all records from its data source) and fills each child buffer based on the data relation's query. If you do not want the AVM to treat the first child buffer of the inactive relation as a top-level table, set the FILL-MODE of that buffer to NO-FILL. The AVM does not fill any of the child buffers.
If the AVM encounters an inactive relation while navigating a ProDataSet object, it does not prepare or open a dynamic query for the child table, even if there is a browse associated with the relation's query. If you want to access the child temp-table, you must do so through a separate query, a FOR EACH statement, or some other standard ABL construct in your application code.
When you reactivate data-relations, the AVM does not automatically resynchronize the hierarchy of queries on buffers below the newly active relation. If you want to resynchronize the related buffers, use the SYNCHRONIZE( ) method on the parent buffer.