public Object getValueAt(int row, int col) {
   Object loValor = null;
   try {
     if (mlUltimaFilaCargada != row) {
       mlUltimaFilaCargada = row;
       moCampos.cargar((IFilaDatos) moLista.get(row));
     }
     loValor = moCampos.get(col).getValue();
   } catch (Exception e) {
     JDepuracion.anadirTexto(this.getClass().getName(), e);
     loValor = null;
   }
   return loValor;
 }
  public IResultado moActualizar(
      String psNombreServlet,
      JActualizar poActualizar,
      IServerEjecutar poEjecutar,
      ISelectEjecutarSelect poEstruc) {
    IResultado loResult = null;
    try {
      // comenzamos la transaccion
      beginTrans();
      // ejecutamos el actualizador
      if (poActualizar == null) {
        if (poEjecutar == null) {
          loResult = ejecutarSQLCompleta(poEstruc, getConec(), moSelect);
        } else {
          loResult = poEjecutar.ejecutar(this);
        }
      } else {
        BooleanModif lbYaNumTransac = new BooleanModif();
        loResult = procesarSincronizar(poActualizar, lbYaNumTransac);

        if (loResult == null || loResult.getBien()) {
          loResult = ejecutarSQLCompleta(getConec(), moSelect, poActualizar);
        }

        if (loResult.getBien() && !lbYaNumTransac.booleanValue()) {
          IListaElementos loLista = loResult.getListDatos();
          for (int i = 0; loLista != null && i < loLista.size(); i++) {
            JListDatos loListAuxConDatos = (JListDatos) loLista.get(i);
            if (!isTablaSincronizacion(loListAuxConDatos.msTabla)) {
              JListDatos loList = getTableDefs().get(loListAuxConDatos.msTabla).getListDatos();
              if (loListAuxConDatos.moveFirst()) {
                do {

                  int[] lalTiposCamposPrincipalesMasTransac =
                      new int[loList.getFields().malCamposPrincipales().length + 1];
                  String[] lasNombresCamposPrincipalesMasTransac =
                      new String[loList.getFields().malCamposPrincipales().length + 1];
                  int[] lalCamposPrincipales =
                      new int[loList.getFields().malCamposPrincipales().length];
                  int k = 0;
                  for (int lCampo = 0; lCampo < loList.getFields().size(); lCampo++) {
                    if (loList.getFields(lCampo).getPrincipalSN()) {
                      lalTiposCamposPrincipalesMasTransac[k] = loList.getFields(lCampo).getTipo();
                      lasNombresCamposPrincipalesMasTransac[k] =
                          loList.getFields(lCampo).getNombre();
                      lalCamposPrincipales[k] = lCampo;
                      k++;
                    }
                  }
                  lalTiposCamposPrincipalesMasTransac[
                          lalTiposCamposPrincipalesMasTransac.length - 1] =
                      JListDatos.mclTipoNumero;
                  lasNombresCamposPrincipalesMasTransac[
                          lalTiposCamposPrincipalesMasTransac.length - 1] =
                      JSincronizar.mcsCampoNumeroTransaccion;

                  JFieldDefs loCampos =
                      new JFieldDefs(
                          lasNombresCamposPrincipalesMasTransac,
                          lalCamposPrincipales,
                          lasNombresCamposPrincipalesMasTransac,
                          lalTiposCamposPrincipalesMasTransac,
                          null);
                  k = 0;
                  for (int lCampo = 0; lCampo < loList.getFields().size(); lCampo++) {
                    if (loList.getFields(lCampo).getPrincipalSN()) {
                      loCampos.get(k).setValue(loListAuxConDatos.moFila().msCampo(lCampo));
                      k++;
                    }
                  }
                  loCampos
                      .get(lalTiposCamposPrincipalesMasTransac.length - 1)
                      .setValue(getNumeroTransacGlobalMasUno());

                  JActualizar loActu =
                      new JActualizar(
                          loCampos,
                          loList.msTabla,
                          JListDatos.mclEditar,
                          msUsuario,
                          msPassWord,
                          msPermisos);
                  IResultado loRes = ejecutarSQLCompleta(getConec(), moSelect, loActu);
                  if (!loRes.getBien()) {
                    loResult =
                        new JResultado(
                            "Fallo de actualizacion del campo "
                                + JSincronizar.mcsCampoNumeroTransaccion
                                + "("
                                + loRes.getMensaje()
                                + ")",
                            false);
                  }
                } while (loListAuxConDatos.moveNext());
              }
            }
          }
        }
      }

    } catch (Exception e1) {
      loResult =
          new JResultado(new JFilaDatosDefecto(""), "", "En Servidor=" + e1.toString(), false, -1);
    } finally {
      if (getConec() != null) {
        try {
          // terminamos la trasaccion
          if (loResult == null) {
            rollBackTrans();
          } else {
            if (loResult.getBien()) {
              commitTrans();
            } else {
              rollBackTrans();
            }
          }
        } catch (Exception e2) {
          JDepuracion.anadirTexto(this.getClass().getName(), e2);
        }
      }
    }

    return loResult;
  }
 public Class getColumnClass(int c) {
   return moCampos.get(c).getClase();
 }
 public String getColumnName(int col) {
   return moCampos.get(col).getCaption();
 }
 public int getColumnCount() {
   return moCampos.count();
 }