Project

General

Profile

r-brows2x.p

Igor Skornyakov, 10/23/2015 06:47 PM

Download (1.66 KB)

 
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.