Progress
Language Reference


RELEASE Statement

Interfaces
OS
SpeedScript
All
All
Yes

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

The name of a record buffer.

To use RELEASE with a record in a table defined for multiple databases, you must qualify the record’s table name with the database name. See the Record Phrase reference entry for more information.

NO-ERROR

Specifies that any errors that occur in the attempt to release the record are suppressed. After the RELEASE statement completes, you can check the ERROR-STATUS system handle for information on any errors that occurred.

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 BUTTON upd-cust LABEL "Update Customer".  
DEFINE BUTTON exit-app LABEL "Exit".
DEFINE VARIABLE methRtn AS LOGICAL.
DEFINE VARIABLE curr-cust AS ROWID.
DEFINE QUERY seq-cust FOR customer.
DEFINE BROWSE brow-cust QUERY seq-cust DISPLAY Cust-num Name WITH 10 DOWN.
   
FORM
   upd-cust exit-app SKIP(1)
   brow-cust
   WITH FRAME main-frame.

FORM
   customer EXCEPT comments
   WITH FRAME curr-frame COLUMN 40.

OPEN QUERY seq-cust FOR EACH customer.

ON VALUE-CHANGED OF brow-cust
   DO:
      DISPLAY customer EXCEPT 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 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


Copyright © 2004 Progress Software Corporation
www.progress.com
Voice: (781) 280-4000
Fax: (781) 280-4095