The following example code shows the steps for populating a dataset from the initial definitions to the FILL operation.

/* temp-table definitions */
DEFINE TEMP-TABLE ttOrder NO-UNDO BEFORE-TABLE bttOrder 
  FIELD OrderNum AS INTEGER
  FIELD CustNum AS INTEGER
  FIELD OrderDate AS DATE
  FIELD ShipDate AS DATE
  FIELD PromiseDate AS DATE
  FIELD OrderTotal AS DECIMAL
  INDEX OrderNum IS UNIQUE PRIMARY OrderNum.
            
DEFINE TEMP-TABLE ttOrderLine NO-UNDO BEFORE-TABLE bttOrderLine 
  FIELD OrderNum AS INTEGER
  FIELD LineNum AS INTEGER
  FIELD ItemNum AS INTEGER
  FIELD Price AS DECIMAL
  FIELD Qty AS INTEGER
  FIELD Discount AS INTEGER
  FIELD ExtendedPrice AS DECIMAL
  INDEX OrderNum_LineNum IS UNIQUE PRIMARY OrderNum LineNum. 
            
/* dataset definition */ 
DEFINE DATASET dsOrderOrderLine FOR ttOrder, ttOrderLine 
  DATA-RELATION drOrderOrderLine FOR ttOrder, ttOrderLine 
    RELATION-FIELDS (OrderNum, OrderNum). 
            
/* query definition for the top-level temp-table */ 
DEFINE QUERY qOrder FOR Order. 
            
/* data-source definitions */ 
DEFINE DATA-SOURCE srcOrder FOR QUERY qOrder. /* Points to query */
DEFINE DATA-SOURCE srcOrderLine FOR OrderLine. /* Points to table */
            
/* prepare query */
QUERY qOrder:QUERY-PREPARE( "FOR EACH Order WHERE shipdate < TODAY" ).
            
/* attach data sources */
BUFFER ttOrder:ATTACH-DATA-SOURCE(DATA-SOURCE srcOrder:HANDLE).
BUFFER ttOrderLine:ATTACH-DATA-SOURCE(DATA-SOURCE srcOrderLine:HANDLE).
            
/* populate the dataset */
DATASET dsOrderOrderLine:FILL().

Note the query is for the top-level temp-table. FILL populates the child temp-table based on the DATA-RELATION definition. For example, all OrderLines for the Orders that meet the criteria for qOrder.

See also

Define a query on a child table in Use ProDataSets