DOCUMENT #773
     ===========================================================================
     LOCATE FIELDS OUTSIDE A REGION
     ===========================================================================
     PRODUCT:  R:BASE                           VERSION:  4.5+ or Higher
     ===========================================================================
     CATALOG:  Forms, Reports & Labels          AREA   :  Forms
     ===========================================================================
 
     An R:BASE form requires all fields for a table with a region defined to be
 
     located inside the region boundaries. This often time necessitates making 
 
     a two table form instead of a one table form, or repeating data inside the
 
     region. This procedure does not remove the rule, rather it circumvents it by 
     not locating fields, but using an EEP to look up the data and write it to 
 
     the screen instead of actually locating the fields. Of course this makes the 
     data non-editable, but is a quick and easy way to display additional data 
 
     anywhere on the screen. 
 
     The basic procedure is to place an EEP on Entry into the row for the region 
     table. A form expression, varname = colname, places the row identifier into 
     a variable so the EEP can look up the data. With SCREEN RESTORE OFF, the 
     EEP looks up the values into variables and writes them to the desired 
     position on the screen. This works when using the form to Edit data, the 
     variable values are looked up and displayed each row without the user 
     having to enter any data. When using the form to Add data you would need to 
     place the EEP on exit from the row identifier field. It would execute and 
 
     lookup the data values after the user enters data.
 
     For example, create a single table form that is a region, use the salesbonus 
     table from the Concomp sample database. Define a form expression, 
     vempid = empid to place the column data needed for the lookup into a 
     variable. The EEP is placed on Entry into a row. The EEP uses the SELECT 
     command to look up matching data from the employee table into variables and 
     write it on the screen. As you move from row to row in the region the 
     lookup data is automatically refreshed. 
 
     Note that all the rows from the region table, salesbonus, are displayed, 
     not just matching rows as would be the case if you used a two-table form 
     with employee the first table and salesbonus the second table. 
 
 
     *(LOOKUP.EEP)
 
     -- set the variables to NULL so they won't retain values
     -- from a previous row
     SET VAR vefname = NULL, velname = NULL, vphone = NULL
     -- get the data to display
     SELECT empfname, emplname, empphone INTO +
            vefname ind1, velname ind2, vhiredate ind3 +
        FROM employee WHERE empid=.vempid
     CLS FROM 3 TO 6
     SET VAR vname = (.vefname & .velname)
     WRITE 'ID #: ', .vempid AT 3,12
     WRITE 'Employee name: ' .vname AT 4,12
     WRITE 'Phone #: ', .vphone AT 5,12
     SCREEN RESTORE OFF
     RETURN
 
     This EEP does not return any data to the form, it is used for display only
. 
     Because it is executed on entry into a row you don't need to trap for any 
 
     keystrokes such as Esc; you always want it to execute. The data that is 
     looked and displayed on the screen can be from another table as in this 
     example, or from the same table the region is on.