1
|
DEFINE TEMP-TABLE t
|
2
|
FIELD CustNum LIKE Customer.CustNum
|
3
|
FIELD Name LIKE Customer.Name
|
4
|
FIELD Phone LIKE Customer.Phone
|
5
|
FIELD Discount LIKE Customer.Discount.
|
6
|
|
7
|
DEFINE VARIABLE method-return AS LOGICAL NO-UNDO.
|
8
|
DEFINE QUERY q1 FOR t SCROLLING.
|
9
|
|
10
|
DEFINE BROWSE b1 QUERY q1 NO-LOCK DISPLAY t.CustNum t.Name
|
11
|
t.Phone t.Discount ENABLE t.Name t.Phone t.Discount
|
12
|
WITH 15 DOWN NO-ASSIGN SEPARATORS.
|
13
|
|
14
|
DEFINE BUTTON button1 LABEL "New Row".
|
15
|
DEFINE FRAME f1
|
16
|
SKIP(1) SPACE(8) b1 SKIP(1) SPACE(8) button1
|
17
|
WITH NO-BOX NO-HELP NO-VALIDATE NO-AUTO-VALIDATE.
|
18
|
|
19
|
|
20
|
ON ROW-LEAVE OF b1 IN FRAME f1 DO: /* No-Assign Browser */
|
21
|
/* If new row, create record and assign values in browse. */
|
22
|
IF b1:NEW-ROW THEN DO:
|
23
|
CREATE Customer.
|
24
|
ASSIGN INPUT BROWSE b1 t.Name t.Phone.
|
25
|
DISPLAY t.CustNum WITH BROWSE b1.
|
26
|
method-return = b1:CREATE-RESULT-LIST-ENTRY().
|
27
|
RETURN.
|
28
|
END.
|
29
|
/* If record exists and was changed in browse, update it. */
|
30
|
IF BROWSE b1:CURRENT-ROW-MODIFIED THEN DO:
|
31
|
GET CURRENT q1 EXCLUSIVE-LOCK.
|
32
|
IF CURRENT-CHANGED t THEN DO:
|
33
|
MESSAGE "This record has been changed by another user." SKIP
|
34
|
"Please re-enter your changes.".
|
35
|
DISPLAY t.CustNum t.Name t.Phone WITH BROWSE b1.
|
36
|
RETURN NO-APPLY.
|
37
|
END.
|
38
|
ELSE /* Record is the same, so update it with exclusive-lock */
|
39
|
ASSIGN INPUT BROWSE b1 t.Name t.Phone.
|
40
|
/* Downgrade the lock to a no-lock. */
|
41
|
GET CURRENT q1 NO-LOCK.
|
42
|
END.
|
43
|
END.
|
44
|
|
45
|
ON CHOOSE OF button1 IN FRAME f1 DO: /* Insert */
|
46
|
method-return = b1:INSERT-ROW("AFTER").
|
47
|
END.
|
48
|
|
49
|
OPEN QUERY q1 FOR EACH t.
|
50
|
ENABLE ALL WITH FRAME f1.
|
51
|
WAIT-FOR WINDOW-CLOSE OF CURRENT-WINDOW.
|