code: public int doEdit() throws DBException
      {
          try   {
              if ((!SQLParams.DB_EDIT_NOT_SUPPORTED.equals(((ClientDatabase)this.getDatabase()).getRemoteProperty(SQLParams.EDIT_DB_PROPERTY, false)))        //+ Remote db supports edit
                  || ((this.getRecord().getOpenMode() & DBConstants.OPEN_LOCK_ON_EDIT_STRATEGY) != 0))
              {
                  synchronized (this.getSyncObject())
                  {   // In case this is called from another task
                      int iOpenMode = this.getRecord().getOpenMode() | DBConstants.OPEN_ERROR_ON_DIRTY_LOCK_TYPE;  // Make sure server doesn't refresh on dirty (I will do the refresh)
                      return m_tableRemote.edit(iOpenMode);    // Only call if edit is supported by remote db
                  }
              }
              else
                  return DBConstants.NORMAL_RETURN;
          } catch (Exception ex) {
              throw DatabaseException.toDatabaseException(ex);
          }
      }
docs: Lock the current record.
  Will not make the remote call if the remote db doesn't have lock capability.
  The remote set method automatically does an edit before calling.
  This method responds differently depending on what open mode the record is in:
  OPEN_DONT_LOCK - A physical lock is not done. This is usually where deadlocks are possible
  (such as screens) and where transactions are in use (and locks are not needed).
  OPEN_LOCK_ON_EDIT - Holds a lock until an update or close. (Update crucial data, or hold records for processing)
  Returns false is someone already has a lock on this record.
  OPEN_WAIT_FOR_LOCK - Don't return from edit until you get a lock. (ie., Add to the total).
  Returns false if someone has a hard lock or time runs out.
  @return true if successful, false if lock failed.
  @exception DBException FILE_NOT_OPEN
  @exception DBException INVALID_RECORD - Record not current.