Hola:
Tengo un importador de JSON al que le paso la cadena JSON y los datos para que realice una búsqueda por el campo CODIGO. Si el resultado de la Búsqueda por el campo CODIGO es 0 (no lo encuentra) se añade el registro con los datos del JSON. Sim embargo, si el registro existe quiero modificar el registro con los datos de JSON utilizando registro.modifyRegister() pero no me modifica los datos del registro. ¿Qué puedo tener mal?
Saludos.
Ricardo Patón
//IMPORTADOR JAVASCRIPT
// Leemos variables del proceso
var delimitador = theRoot.varToString( "DELIMITADOR" );
// alert( "Delimitador: " + delimitador );
var fichero = theRoot.varToString( "FICHERO" );
// alert( "Fichero: " + fichero );
var formato = theRoot.varToString( "FORMATO" );
var szErrMsg ="";
//Importamos las clases que vamos a necesitar
var tabla = theRoot.varToString( "TABLA" );
importClass( "VQuery" );
var bus = new VQuery( theRoot );
bus.setQuery( "vTomCamp/"+tabla+"_CODIGO" );
// Definimos la tabla para la importación
var theMainProject = theApp.mainProjectInfo();
if ( theMainProject )
{
// Parseamos el fichero y pasamos la información a un objeto
var objetoImportacion = JSON.parse( fichero );
if ( objetoImportacion )
{
// Abrimos transacción
if (theRoot.beginTrans("Importación del fichero" ))
{
var bOK = true;
// Recorremos las tablas
for (var table in objetoImportacion )
{
var objectInfoTablaImportacion = objectInfoTabla( table.toUpperCase() );
var tableInfoTablaImportacion = tableInfoTabla( table.toUpperCase() );
if ( objectInfoTablaImportacion )
{
for ( var element in objetoImportacion[table] )
{
// Recorremos las filas
for ( var row in objetoImportacion[table][element] )
{
// Creamos el registro
var registro = new VRegister(theRoot);
var bRegistroCreado = registro.setTable( objectInfoTablaImportacion.idRef(), false ); // true: Disparar contenidos iniciales
if ( bRegistroCreado && registro && registro.isOK() )
{
for ( var field in objetoImportacion[table][element][row] )
{
var campo = field;
var dato = objetoImportacion[table][element][row][field];
// Comprobamos que el campo exista
if ( tableInfoTablaImportacion.findField( campo ) > -1 )
{
registro.setField( campo, dato );
}
if ( campo == "CODIGO" )
{
bus.setVar( "CODIGO", dato);
}
}
if ( bus.exec() )
{
ListaResultados = bus.result();
if ( ListaResultados.listSize() == 0 )
{
// Si el CODIGO no existe añadimos el registro
registro.addRegister();
bOK = registro.isOK();
}
else
{
// Si el CODIGO existe añadimos el registro
registro.modifyRegister();
}
}
}
if ( !bOK )
{
// Se deshace la transacción
theRoot.revert();
// Mensaje de error
szErrMsg = "Error. No se ha podido crear el registro: " + j + ".\n" + szMsg + "\nFinializa el proceso y se deshace la transacción.";
theRoot.setVar( "ERROR", szErrMsg );
}
}
}
}
else
{
// Mensaje de error
szErrMsg = "Error. No se ha podido encontrar la tabla: " + table;
theRoot.setVar( "ERROR", szErrMsg );
}
}
}
else
{
// Mensaje de error
szErrMsg = "Error. No se ha podido iniciar la transacción.";
theRoot.setVar( "ERROR", szErrMsg );
}
}
else
{
// Mensaje de error
szErrMsg = "Error. No se ha podido parsear el fichero json.";
theRoot.setVar( "ERROR", szErrMsg );
}
}
else
{
// Mensaje de error
szErrMsg = "Error. No se ha encontrado el proyecto." ;
theRoot.setVar( "ERROR", szErrMsg );
}
// Devuelve el objectInfo de la tabla si existe
function objectInfoTabla( id )
{
// Recorremos los objetos tabla = 0
for( var nIndex=0; nIndex < theMainProject.allObjectCount(0); nIndex++ )
{
// Obtenemos el objectInfo del objeto búsqueda
var tablaProyecto = theMainProject.allObjectInfo( 0, nIndex );
if ( tablaProyecto && tablaProyecto.id() == id )
return tablaProyecto;
}
return false;
}
// Devuelve el tableInfo de la tabla si existe
function tableInfoTabla( id )
{
// Recorremos los objetos tabla = 0
for( var nIndex=0; nIndex < theMainProject.allTableCount(0); nIndex++ )
{
// Obtenemos el objectInfo del objeto búsqueda
var tablaProyecto = theMainProject.allTableInfo( nIndex );
if ( tablaProyecto && tablaProyecto.id() == id )
return tablaProyecto;
}
return false;
}