This function allows the user to search for a specific order by entering criteria
into the form (Query by Example). This CONSTRUCT statement is not a
sub-dialog of a DIALOG statement. It is a stand-alone statement called by
the action find, triggered when the user selects the corresponding menu
item or toolbar icon on the form orderform.
Function
order_query
(
orders.4gl):
01 FUNCTION order_query()
02 DEFINE where_clause STRING,
03 id INTEGER, name STRING
04
05 MESSAGE msg02
06 CLEAR FORM
07
08 WHILE TRUE
09 LET int_flag = FALSE
10 CONSTRUCT BY NAME where_clause ON
11 orders.store_num,
12 customer.store_name,
13 orders.order_num,
14 orders.order_date,
15 orders.fac_code
16
17 ON ACTION zoom1
18 CALL display_custlist() RETURNING id, name
19 IF id > 0 THEN
20 DISPLAY id TO orders.store_num
21 DISPLAY name TO customer.store_name
22 END IF
23
24 ON ACTION about
25 CALL __mbox_ok(title1,msg18,"information")
26
27 END CONSTRUCT
28
29 IF int_flag THEN
30 MESSAGE msg03
31 IF arr_ordnums.getLength()==0 THEN
32 IF __mbox_yn(title1,msg15,"stop") THEN
33 EXIT PROGRAM
34 END IF
35 CONTINUE WHILE
36 END IF
37 RETURN
38 ELSE
39 IF order_select(where_clause) THEN
40 EXIT WHILE
41 END IF
42 END IF
43 END WHILE
44
45 END FUNCTION
Note:
- Line 02 defines a STRING variable,
where_clause, to hold the WHERE clause
created from the criteria entered in the form fields by the user.
- Line03 defines an integer variable,
id, to hold the store number selected by the user after
triggering the display_custlist function of the
custlist.4gl module.
- Line 05 displays a message instructing the user to enter search criteria.
- Lines 08 thru 43 contain the WHILE statement that is executed
until an order is successfully selected or the user cancels the operation.
- Lines 10 thru 15 specify the form fields that will contain the search criteria
for the CONSTRUCT statement.
- Lines 11 thru 22 define an ON ACTION clause for the
zoom1 button in the orderform form
specification file. After the user selects the desired customer from the
customer list that is displayed, the customer number and name are stored in the
corresponding fields of orderform.
- Lines 24 thru25 display the message when the user selects the
about menu item on the orderform
form.
- Lines 29 thru 42 test whether the user wants to interrupt the dialog and
responds accordingly.
- Lines 31 thru 37 When the user interrupts, a message box is displayed if the
arr_ordnums array is empty, allowing the user to exit the
program, or to continue. If the array is not empty, the function simply
returns.
- Lines 39 thru 42 when the user has not interrupted, the
order_select function is called to retrieve the order
information; then the WHILE loop is exited.