docs: public int moveBufferToFields(Object data, int iFieldTypes, Record recordBase)
          throws DBException
      {
          BaseBuffer buffer = new VectorBuffer((Vector)data, iFieldTypes);
          this.cleanBuffer(buffer, recordBase);
          
          Object objCounter = null;
          if (recordBase.getCounterField() != null)
              objCounter = recordBase.getCounterField().getData();
          int iOpenMode = recordBase.getOpenMode();
          if ((iOpenMode & DBConstants.OPEN_REFRESH_AND_LOCK_ON_CHANGE_STRATEGY) == DBConstants.OPEN_REFRESH_AND_LOCK_ON_CHANGE_STRATEGY)
              recordBase.setOpenMode(iOpenMode & ~DBConstants.OPEN_REFRESH_AND_LOCK_ON_CHANGE_STRATEGY);     // Don't refresh until I'm done.
          int iFieldCount = recordBase.getFieldCount();
          boolean[] rgbModified = new boolean[iFieldCount];
          Object[] rgobjEnabled = new Object[iFieldCount];
          for (int iFieldSeq = 0; iFieldSeq < iFieldCount; iFieldSeq++)
          {
              rgbModified[iFieldSeq] = recordBase.getField(iFieldSeq).isModified();
              recordBase.getField(iFieldSeq).setModified(false);
              rgobjEnabled[iFieldSeq] = recordBase.getField(iFieldSeq).setEnableListeners(false);
          }
          int iErrorCode = buffer.bufferToFields(recordBase, iFieldTypes, DBConstants.DONT_DISPLAY, DBConstants.SCREEN_MOVE);   // Screen move... need to validate!
          if (iErrorCode != DBConstants.NORMAL_RETURN)
              throw new DatabaseException(iErrorCode);
          recordBase.setOpenMode(iOpenMode);     // Restore to original value.
          if (objCounter != null)
              if (recordBase.getCounterField().getData() == null)
                  recordBase.getCounterField().setData(objCounter);   // Can't set the counter to null!
          for (int iFieldSeq = 0; iFieldSeq < recordBase.getFieldCount(); iFieldSeq++)
          {
              recordBase.getField(iFieldSeq).setEnableListeners((boolean[])rgobjEnabled[iFieldSeq]);
          }
          for (int iFieldSeq = 0; iFieldSeq < recordBase.getFieldCount(); iFieldSeq++)
          {
              BaseField field = recordBase.getField(iFieldSeq);
              if (field.isModified())
              {
                  iErrorCode = field.handleFieldChanged(DBConstants.DONT_DISPLAY, DBConstants.SCREEN_MOVE);
                  if (iErrorCode != DBConstants.NORMAL_RETURN)
                  {
                      throw new DatabaseException(iErrorCode);
                  }
              }
              if (rgbModified[iFieldSeq])
                  if (!field.isModified()) // If this started modified, set it back.
                      field.setModified(true);
          }
          return iErrorCode;
      }