TLocks

Source: source/classes/tlocks.prg

Standalone class

TLocks provides a record-locking mechanism for ODBC tables. It manages a lock table within the database that tracks which records are locked and by which connection. This enables basic pessimistic concurrency control for ODBC data sources that do not provide native record-level locking.

Key DATA Members

DATATypeDescription
oOdbcObjectTODBC connection object for database access
cTableCharacterName of the table being locked
nIdNumericConnection or session identifier

Methods

MethodDescription
New( oOdbc, cTable )Create a new lock manager for the specified ODBC connection and table
CreateEnviroment()Create the lock tracking environment (lock table) if it does not exist
Lock( nRecNo )Lock a pseudo-record by record number
UnLock( nRecNo )Release a lock on a pseudo-record
RefreshLock( nRecNo )Refresh the lock timestamp to prevent timeout expiration
SeekRegLock( nRecNo )Check if a pseudo-record is currently locked

Example: Lock/Unlock a Pseudo-Record

#include "FiveWin.ch"

function Main()

   local oOdbc, oLocks

   oOdbc := TODBC():New( "MyDSN", "user", "pass" )

   if oOdbc:lSuccess
      oLocks := TLocks():New( oOdbc, "CUSTOMERS" )

      // Ensure the lock environment exists
      oLocks:CreateEnviroment()

      // Lock record number 101
      if oLocks:Lock( 101 )
         MsgInfo( "Record 101 locked" )

         // Do work with the record...

         // Release the lock
         oLocks:UnLock( 101 )
         MsgInfo( "Record 101 unlocked" )
      else
         MsgAlert( "Could not lock record 101" )
      endif
   endif

return nil

Notes

See Also