Use the REPOSITION Data-Relation
- Last Updated: March 30, 2020
- 2 minute read
- OpenEdge
- Version 12.2
- Documentation
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.
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.