DDOConstraintNeedsRelate - DataDictionary

Determines whether the constraints you are using require relates to determine if a record is valid

Type: Function

Return Data Type: Boolean

Parameters: Integer iOrder

ParameterDescription
iOrderOrdering (index) number


Return Value

Returns True if the constraints you are using require relates to determine if a record is valid


Syntax
Function DDOConstraintNeedsRelate Integer iOrder Returns Boolean

Call: Get DDOConstraintNeedsRelate iOrder to BooleanVariable


Description

When you are reading a batch of records there will be times when you don't really need to perform relates.

In such a case, you can set the No_Relate_State property to True to disable constraints. Before you do that, you want to make sure that the constraints you are using do not require relates to determine if a record is valid. If a relate is required, a relate must occur. While you could do this by getting DDOConstraintFindMeta and looking at the bPostRelate member, you can test this directly by getting DDOConstraintsNeedsRelate. You pass it an index and it will tell you if the current constraints require a relate.

For example, if you wanted to find the total of all orders based on current constraints you could do the following:

Move oOrderHea_DD to hoServer
Move 1 to iIndex

Get No_Relate_State of hoServer to bOldRelate
Get DDOConstraintNeedsRelate of hoServer iIndex to bNeedsRelate
Set No_Relate_State of hoServer to (not(bNeedsRelate))

Send Request_Read of hoServer FIRST_RECORD Orderhea.File_Number iIndex 
Move (Found) to bOk
While (bOK)
    Move (Orderhea.Total+nTotal) to nTotal
    Send Request_Read of hoServer GT Orderhea.File_Number iIndex 
    Move (Found) to bOk
Loop
Set No_Relate_State of hoServer to bOldRelate

This type of technique is most useful when building classes that need to read records for an set of constraints.