=====================================================================
Row Level EEPS in Forms
=====================================================================
PRODUCT: R:BASE VERSION: 4.5
=====================================================================
AREA: FORMS CATALOG: FORMS, REPORTS & LABELS
=====================================================================
In R:Base 4.5 users now have the ability to use row level Entry/exit
procedures in a form in addition to field level procedures. A row
level Entry/exit procedure is executed at one of four times:
* On entry into a row
* On exit from a row, before saving the row
* On exit from a row, after saving the row
* After leaving a section (table)
Row level entry exit procedures allow for much greater flexibility of
data manipulation in forms. Instead of putting an EEP on every field
to make sure it executes no matter what field the user is on, you can
put a single EEP at the row level. Row level EEPs are assigned on the
Table settings screen.
A practical example of a row level EEP is illustrated using a modified
version of the form Tranform in the Concomp sample database.
Specifically, the form is updated to allow for greater control of
inventory management. A customer may order one or many products and
each product may exist in one or several locations. Each location
maintains a certain product inventory level. As a product is ordered
from a particular inventory location, an inventory count is taken. If
the inventory count falls below a preset level, the user is informed
that the reorder point has been reached for that product at its'
selected location. The user is then prompted if they'd like to see a
list of alternate locations for the selected product. If the user
chooses an alternate product location, the reorder point for the
alternate selection will also be checked. After the reorder point is
checked, the prodlocation table is updated to reflect the inventory
depletion. Keep in mind that if the user does not select an alternate
product location, the updates will still occur using the original
selections. This works because the product reorder point was set at a
relatively high level, 100 units. If a lower reorder point, for
example 20 units, is set the EEP may be altered so the user is forced
to choose an alternate product location to fill the order. All of the
form modifications were made to the Transdetail table in the form
Tranform. The located fields were reordered, new fields added and
expressions added.
This figure illustrates the new format of the Transdetail tiers:
vmodel vlocation vprod
| | |
| | |
model: S E location: S E Product Name: S E
Detail#: S E Quantity: SE price: S E extprice: S E
| | | |
| | | |
Detailnum vunits vprice vextprice
Notice that Detailnum is the only column located, all the other fields
are variables.
Here is a list of the required variables. Keep in mind that most of
these are already defined in Tranform. The vprice and vprod
expressions are modified to change the WHERE clause comparison value
from model to vmodel. The expression model = .vmodel is added to save
the model value to the table.
1. TEXT : vprod = prodname IN product WHERE model = .vmodel
2. CURRENCY: vprice = listprice IN product WHERE model = .vmodel
3. CURRENCY: vextprice = (.vunits * .vprice)
4. CURRENCY: price = (.vprice)
5. INTEGER : units = (.vunits)
6. INTEGER : vtransid = transid
7. TEXT : model = (.vmodel)
A field level EEP is placed on the vmodel field to display a pop-up
menu for selection of a model and location. An EEP is used instead of
a double column pop-up because both values, the model and the
location, are needed. The pop-up defined in the field settings would
return only one value.
*(model.eep -- choose model and location)
CHOOSE vmod FROM #VALUES FOR +
(model + ',' + ' ' + location) +
FROM prodlocation AT 15 3 CLEAR
IF vmod = '[Esc]' THEN
RETURN
ENDI
-- Parse the model and location values
-- into separate variables
SET VAR vmodel = +
((SSUB(.vmod,1)))
SET VAR vlocation = +
(LJS((SSUB(.vmod,2)),4))
RECALC
RETURN
An EEP is already used in Tranform (tranupd.rmd on vunits ) to
calculate the extended price and net amount and update the Transmaster
table. Leave this EEP on the form. The following EEP, update.eep, is
placed as a row level EEP in the Table setting screen to execute upon
exit from the row, but before the row is saved to the table. This
lets the user change the location the product is pulled from before
the row is saved.
*(update.eep -- check product availability)
--Get the inventory count for the selected product and location
LABEL R_check
SELECT onhand INTO VOnhand IVOnhand FROM prodlocation +
WHERE model = .vmodel and location = .vlocation
--Check to see if product has reached reorder point
IF VOnhand <= 100 THEN
PAUSE 2 USING 'Reorder point reached, hit any key to continue'
DIALOG 'View list of alternate locations?' vresponse vend YES
IF vresponse = 'YES' THEN
CHOOSE valt FROM #VALUES FOR (model +','+' '+ location) +
FROM prodlocation WHERE model = .vmodel
SET VAR vloc = (SSUB(.valt,2))
SET VAR vloc1 = (LJS(.vloc,5))
SET VAR vlocation = .vloc1
GOTO R_check
ENDI
ENDI
SET MESS OFF
--Update the prodlocation table to show proper inventory depletion
WRITE 'Updating location table' AT 24 25
UPDATE prodlocation SET onhand = (onhand - .vunits) WHERE +
model = .vmodel and location = .vlocation
SET MESS ON
--Clear variable values and prepare to enter the next row of data.
SET VAR vmodel TEXT = ' ', +
vlocation TEXT = ' ', +
vprod TEXT = ' ', +
vunits INT = NULL, +
vprice CUR = NULL, +
vextprice CUR = NULL
RECALC
RETURN