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