PRODUCT   :  R:BASE                  VERSION      :  3.1
   CATEGORY  :  FORMS                   SUBCATEGORY  :  EDIT & ENTER
   You can enter and edit in the same form by using the BROWSE command in
   an entry/exit procedure (EEP). Use this technique to display related
   rows that come from the same table, a different table, a view, or
   several tables. Although you can't use a form in an EEP, the BROWSE
   command makes it easy to view historical information on a client,
   patient, or customer while entering data using a form.
   When browsing a single table, a user can press [F4] to edit existing
   values. If you don't want the user to be able to edit existing values,
   use BROWSE DISTINCT instead of BROWSE.
   SEEORDER.EEP (shown below) is an example you can use with the ORDERS
   form in the HIFI database that comes with R:BASE. The ORDERS form in
   HIFI is used with ENTER to add new orders to the ORDERS table.
   SEEORDER.EEP uses BROWSE to display previous orders as you enter a new
   order, and it looks up the last name in SALESPEOPLE.
   Step by Step Solution
   STEP 1 *** Back up the HIFI database and open it. Then choose
   Create/modify under Forms on the R:BASE Main Menu, and then choose the
   ORDERS form under Modify. Next, choose Define under Variables to enter
   this expression:
     vstoreid = storeid
   VSTOREID holds the store identification number for the current row.
   STEP 2 *** Under Layout, choose "Field settings" and then "Storename."
   On the second page, enter Yes to display field help, and enter this
   help line: "Press F2 to view previous orders." Then enter SEEORDER.EEP
   as the exit procedure.
   STEP 3 *** Create the EEP.
     *( SEEORDER.EEP--Show previous orders.)
     SET VAR vlastkey = (LASTKEY(0))
     IF vlastkey <> '[F2]' OR vstoreid IS NULL THEN
     SET VAR vwhere = ('storeid=' + (CTXT(.vstoreid)))
     SET COLOR white ON blue
     BROWSE t1.ordernumber=6, t2.lastname, t1.ponumber=7, +
       t1.orderdate=8, t1.units=4, t1.price=9, +
       t1.totalsale=9, t1.discount=6 +
       FROM orders t1, salespeople t2 +
       WHERE (t1.employeeid=t2.employeeid) AND &vwhere
     CLEAR VAR vwhere, vlastkey
   Customize this EEP for your application. For example, if your common
   column (STOREID in the example) is TEXT, you need to surround its
   value (.VSTOREID) with single quotation marks (CHAR(39)) on the "SET
   VAR vwhere" line, similar to this example:
     SET VAR vwhere=('storeid=' + CHAR(39) + CTXT(.vstoreid) + CHAR(39))
   The BROWSE command in SEEORDER.EEP uses two tables (ORDERS and
   SALESPEOPLE), so the user can browse historical data but can't change
   it. If you want the user to be able to press [F4] to edit old rows
   while browsing them, eliminate the second table. For example, you
   might use this EEP instead of SEEORDER.EEP:
     *( EDORDER.EEP--Edit previous orders.)
     SET VAR vlastkey = (LASTKEY(0))
     IF vlastkey <> '[F2]' OR vstoreid IS NULL THEN
     SET VAR vwhere=('storeid='+(CTXT(.vstoreid)))
     SET COLOR white ON blue
     BROWSE ordernumber=6, ponumber=7, orderdate=8, units=4, +
       price=9, totalsale=9, discount=6 FROM orders WHERE &vwhere
     CLEAR VAR vwhere, vlastkey
   T1 and T2 aren't needed when you're using only one table.
   These EEPs are smart. They use the LASTKEY function to control whether
   or not the EEP executes. If the user doesn't press [F2], the EEP won't
   execute when the user leaves the field.
   STEP 4 *** Test the EEP and modified ORDERS form by entering this
     ENTER orders
   Once you're in the form, enter 202 as the store number. Then move to
   the STORENAME field and press [F2]. The form will clear and you'll be
   viewing all the previous orders for that store. When you finish
   viewing the old orders, choose Exit, and R:BASE will return you to the
   form to enter new orders.