Try OpenEdge Now
skip to main content
ProDataSets
Introducing the OpenEdge DataSet : Defining a static ProDataSet : Using the REPOSITION Data-Relation
 

Using the REPOSITION Data-Relation

You can include the REPOSITION option on a Data-Relation definition that is part of a ProDataSet definition. As you will later see, there is also a REPOSITION logical attribute on a Data-Relation handle that lets you set this mode on or off at run time.
The purpose of the reposition mode on a relation is to handle the situation where you want to load a limited set of child records into a ProDataSet table that is related to possibly multiple parent rows of another table in the ProDataSet. For example, you might want to include a separate State table with state abbreviation and full state name in your ProDataSet rather than joining that information into each individual Customer or Order record in the ProDataSet. Or you might want to include an Item table with all available Items in your ProDataSet and be able to join an Item to all of the OrderLines that include that Item.
If REPOSITION mode is true at the time of a FILL, either because the option is part of the definition or because you have set the attribute to true, then the AVM ignores the Data-Relation. Otherwise the relation would filter the children to retrieve only those records related to a parent of the relation, and fill the table as a top-level table.
Note: A Data-Relation defined with REPOSITION or SELECTION is overridden if a query is defined for a child relation Data-Source. Normally, if REPOSITION is not specified, the child query selects the children of the parent. But coding a query for the child Data-Source overrides whether or not a SELECTION or REPOSITION relation mode was defined.
* Example with REPOSITION not set
* Example with REPOSITION set: loading
* Example with REPOSITION set: navigation