docs: public Record moveTableQuery(int iRelPosition) throws DBException
      {
          BaseTable table = null;
          Record record = null;
          Record recordLeft = null;
          boolean bFirstTime = true;
          for (Enumeration<TableLink> e = m_LinkageList.elements() ; e.hasMoreElements() ;)
          {
              TableLink tableLink = e.nextElement();
              table = tableLink.getLeftRecord().getTable();
              if (bFirstTime)
              {   // First time through - far left table!
                  recordLeft = record = (Record)table.move(iRelPosition);
                  if (record == null)
                      break;
              }
              table = tableLink.getRightRecord().getTable();
              record = table.getRecord();
              record.addNew();
              tableLink.moveDataRight();  // Fill the right table with key
              boolean bFound = record.seek("=");
              if (!bFound)
              {
                  if (tableLink.getJoinType() == DBConstants.LEFT_OUTER)  // DBConstants.LEFT_INNER)
                      record.initRecord(DBConstants.DISPLAY);
                  else
                  {   // Skip this record **NOT TESTED**
                      if ((iRelPosition > 0) || (iRelPosition == DBConstants.FIRST_RECORD))
                          return this.moveTableQuery(+1);
                      return this.moveTableQuery(-1);
                  }
              }
              bFirstTime = false;
          }
          // Sync the mode
          if (recordLeft != null)
          {   // Special test for local criteria
              if ((this.handleLocalCriteria(null, false, null) == false)
                  || (this.handleRemoteCriteria(null, false, null) == false))
              { // This record didn't pass the test, get the next one that matches
                  if ((iRelPosition > 0) || (iRelPosition == DBConstants.FIRST_RECORD))
                      return this.moveTableQuery(+1);
                  return this.moveTableQuery(-1);
              }
              this.setEditMode(recordLeft.getEditMode());
          }
          else
              this.setEditMode(DBConstants.END_OF_FILE);
          return recordLeft;
      }