docs: private Object getAtRow(int iRowIndex) throws DBException
      {
          try   {
              Utility.getLogger().info("get row " + iRowIndex);
  
              GridTable gridTable = this.getGridTable(this.getMainRecord());
  
              gridTable.getCurrentTable().getRecord().setEditMode(Constants.EDIT_NONE);
              Record record = (Record)gridTable.get(iRowIndex);
              int iRecordStatus = DBConstants.RECORD_NORMAL;
              if (record == null)
              {
                  if (iRowIndex >= 0)
                      iRecordStatus = DBConstants.RECORD_AT_EOF;
                  else
                      iRecordStatus = DBConstants.RECORD_AT_BOF;
              }
              else
              {
                  if (record.getEditMode() == DBConstants.EDIT_NONE)
                      iRecordStatus = DBConstants.RECORD_NEW; // Deleted record.
                  if (record.getEditMode() == DBConstants.EDIT_ADD)
                      iRecordStatus = DBConstants.RECORD_NEW;
              }
              if (iRecordStatus == DBConstants.NORMAL_RETURN)
              {
                  Record recordBase = this.getMainRecord().getTable().getCurrentTable().getRecord();
                  int iFieldTypes = this.getFieldTypes(recordBase);
                  BaseBuffer buffer = new VectorBuffer(null, iFieldTypes);
                  buffer.fieldsToBuffer(recordBase, iFieldTypes);
                  return buffer.getPhysicalData();
              }
              else
                  return new Integer(iRecordStatus);
          } catch (DBException ex)    {
              throw ex;
          } catch (Exception ex)  {
              ex.printStackTrace();
              throw new DBException(ex.getMessage());
          }
      }