PreviousNextIndex

RELEASE statement

Verifies that a record complies with mandatory field and unique index definitions. It clears the record from the buffer and unites it to the database if it has been changed.

Syntax

RELEASE record [ NO-ERROR ] 

record
NO-ERROR
Example

The following example uses a browse widget to scan Customer records. Records within the browse are read with NO-LOCK. If you choose the Update Customer button, the CHOOSE trigger starts a transaction and applies an EXCLUSIVE-LOCK to the Customer record. When you have completed any updates, the procedure displays the new values in the browse widget and then executes a RELEASE statement. This ensures that the lock is released when the transaction ends.

r-rels.p
DEFINE VARIABLE methRtn   AS LOGICAL NO-UNDO. 
DEFINE VARIABLE curr-cust AS ROWID   NO-UNDO. 
DEFINE BUTTON upd-cust LABEL "Update Customer".   
DEFINE BUTTON exit-app LABEL "Exit". 
DEFINE QUERY seq-cust FOR customer. 
DEFINE BROWSE brow-cust QUERY seq-cust  
  DISPLAY Customer.CustNum Customer.Name WITH 10 DOWN. 
    
FORM 
  upd-cust exit-app SKIP(1) 
  brow-cust 
  WITH FRAME main-frame. 
FORM 
  Customer EXCEPT Customer.Comments 
  WITH FRAME curr-frame COLUMN 40. 
OPEN QUERY seq-cust FOR EACH Customer. 
ON VALUE-CHANGED OF brow-cust DO: 
  DISPLAY Customer EXCEPT Customer.Comments  
    WITH FRAME curr-frame SIDE-LABELS. 
  curr-cust = ROWID(Customer). 
END. 
ON CHOOSE OF upd-cust DO: /* TRANSACTION */ 
  FIND Customer WHERE ROWID(Customer) = curr-cust EXCLUSIVE-LOCK. 
  UPDATE Customer WITH FRAME cust-frame VIEW-AS DIALOG-BOX 
  TITLE "Customer Update". 
  methRtn = brow-cust:REFRESH(). 
  DISPLAY Customer EXCEPT Customer.Comments  
    WITH FRAME curr-frame SIDE-LABELS. 
  RELEASE Customer. 
END. 
ENABLE ALL WITH FRAME main-frame. 
APPLY "VALUE-CHANGED" TO brow-cust. 
PAUSE 0 BEFORE-HIDE. 
WAIT-FOR CHOOSE OF exit-app OR WINDOW-CLOSE OF DEFAULT-WINDOW. 

If you omit the RELEASE statement in this example, the EXCLUSIVE-LOCK is downgraded to a SHARE-LOCK at the end of the transaction. This prevents other uses from updating that record. The SHARE-LOCK is released when you change the iteration of the browse.

Notes

OpenEdge Release 10.2B
Copyright © 2009 Progress Software Corporation
PreviousNextIndex