VRegisterList

Los objetos de esta clase representan una lista de fichas de una tabla. Dispone de funciones de manejo de la lista y sus items pudiéndose obtener objetos de la clase VRegister por index, en modos lectura y lectura con bloqueo si vamos a modificar.

Las funciones del navegante devuelven otro objeto clase VRegisterList con la lista del maestro o histórico.

Indice de funciones

Constructor

VRegisterList( VRoot root )

Inicialización

void setTable( String szIdRefTable )

Generales

Boolean setTitle( String title )

String title()

De Api de tabla

VTableInfo tableInfo()

De lista & ítems

void append( VRegister register )

void append( VRegisterList registerList )

void clear()

void cross( VRegisterList registerList )

void invert()

Boolean load( String szIdIndice, Array aKeyPartsResol )

Array[VRegisterList] multiSplit( String szIdCompuestoCampo )

Number pos()

VRegister readAt( Number nIndex )

VRegister readLockingAt( Number nIndex )

void remove( VRegister register )

void remove( VRegisterList registerList )

void removeAt( int nIndex )

Number size()

void sort( Array aszIdCompuestoCampo )

void sort( String szIdCompuestoCampo )

De navegante

VRegisterList loadMasters( String szIDPrimarioCampo )

VRegisterList loadPlurals( String szIDHistorico )

Varias

Boolean runProcess( String szIdRefProcess )

Serialización

Boolean loadFromData( VByteArray buffer )

Boolean loadFromFile( String path )

VByteArray saveToData()

Boolean saveToFile( String path )

De JSON

Object toJSON( Array aszIDs )

De CSV

String toCSV( Array aszIDs, Boolean bHeader, String szRegSep, String szValSep, String szNumberFormat )

Boolean toCSVfile( String szFileName, Array aszIDs, bool bHeader, String szRegSep, String szValSep, String szNumberFormat )

Documentación de funciones

Constructor

VRegisterList( VRoot root )

Constructor del objeto VRegisterList.

Parámetros:

  • root: objeto VRoot, normalmente usaremos theRoot.

Inicialización

void setTable( String szIdRefTable )

Asigna la tabla al objeto VRegisterList creado con el constructor. Devuelve true si ha podido asignar la tabla correctamente. Una vez ejecutada es equivalente a crear una cesta de la tabla.

Parámetros:

  • szIdRefTable: cadena que contiene el identificador referencia de la tabla.

Funciones generales

Boolean setTitle( String title )

Establece un título para la lista que podemos usar de forma interna para controlarla.

String title()

Devuelve el título de la lista que hayamos establecido.

Funciones de Api de tabla

VTableInfo tableInfo()

Devuelve un objeto VTableInfo de la tabla de la lista de registros.

Funciones de lista & ítems

void append( VRegister register )

Añade un registro a la lista. Equivale al comando de instrucción "Cesta: añadir ficha a la cesta".

Parámetros:

void append( VRegisterList registerList )

Añade una lista a la lista. Equivale al comando de instrucción "Cesta: añadir lista a la cesta".

Parámetros:

  • registerList: objeto de la clase VRegisterList.

void clear()

Limpia la lista de registros. Equivale al comando de instrucción "Cesta: limpiar".

void cross( VRegisterList registerList )

Cruza la lista de registros con la lista en curso. En la lista en curso sólo quedarán los registros coincidentes. Equivale al comando de instrucción "Cesta: cruzar la lista de la cesta". Sólo hemos de quedarnos con la lista cruzada, la otra la tendremos que deshechar.

Parámetros:

  • registerList: objeto de la clase VRegisterList.

void invert()

Invierte el orden de los registros de la lista.

Boolean load( String szIdIndice, Array aKeyPartsResol )

Carga en el VRegisterList los registros encontrados en la búsqueda realizada con el índices y las resoluciones configuradas. Devuelve false si la búsqueda no ha podido ejecutarse por algún error y devuelve true si la búsqueda ha podido realizarse, aunque no haya encontrado ningún registro. Esta función es equivalente al comando de instrucción de Velneo cargar lista.

Parámetros:

  • szIdIndice: cadena que contiene el identificador del índice.

  • aKeyPartsResol: array que contiene las resoluciones de cada una de las partes del índice.

Array[VRegisterList] multiSplit( String szIdCompuestoCampo )

Multiparte la lista creando un array de VRegisterLists que contiene cada una de las listas resultantes.

Parámetros:

  • szIdCompuestoCampo: cadena que contiene el identificador compuesto del campo por el que se multiparte.

Number pos()

Devuelve la posición del registro en curso de la lista.

VRegister& readAt( Number nIndex )

Devuelve una referencia a un objeto de la clase VRegister que se genera internamente con el registro de la posición seleccionada.

Al ser una referencia a un registro interno, una segunda ejecución de readAt provocará que se destruya la referencia anterior y se cree otra nueva. Para guardar este registro debemos crear un nuevo VRegister y mediante la función copyFrom copiar el registro interno en el nuevo VRegister.

Ver ejemplo: 4. Creación de un nuevo VRegister para guardar el registro interno leído con readAt()

Parámetros:

  • nIndex: número que contiene la posición del registro en la lista. La primera posición es la 0.

VRegister& readLockingAt( Number nIndex )

Devuelve una referencia a un objeto de la clase VRegister que se genera internamente con el registro de la posición seleccionada. Este registro está bloqueado y permite realizar operaciones de base de datos contra el registro.

Al ser una referencia a un registro interno, una segunda ejecución de readAt provocará que se destruya la referencia anterior y se cree otra nueva. Para guardar este registro debemos crear un nuevo VRegister y mediante la función copyFrom copiar el registro interno en el nuevo VRegister.

Ver ejemplo: 4. Creación de un nuevo VRegister para guardar el registro interno leído con readAt()

Parámetros:

  • nIndex: número que contiene la posición del registro en la lista. La primera posición es la 0.

void remove( VRegister register )

Quita de la lista el registro. Esto no eliminar el registro de la base de datos, sólo de la lista. Equivale al comando de instrucción "Cesta: quitar ficha de la cesta".

Parámetros:

void remove( VRegisterList registerList )

Quita de la lista los registros de la lista que se pasa. En la lista en curso quedarán los registros no coincidentes. Esto no elimina los registros de la base de datos, sólo los quita de la lista.

Parámetros:

  • registerList: objeto de la clase VRegisterList.

void removeAt( int nIndex )

Quita de la cesta el registro de la posición indicada. Esto no eliminar el registro de la base de datos, sólo de la lista.

Parámetros:

  • nIndex: number que contiene la posición del registro en la lista

Number size()

Devuelve el número de registros que contiene la lista.

void sort( Array aszIdCompuestoCampo )

Ordena la lista de registros por los campos indicados en el array de identificadores que se indica como parámetro.

Parámetros:

  • aszIdCompuestoCampo: array de cadenas que contiene los identificadores del campo de la tabla o de sus enlazadas que se usarán para ordenar.

void sort( String szIdCompuestoCampo )

Ordena la lista de registros por el campo indicado.

Parámetros:

  • szIdCompuestoCampo: cadena que contiene el identificador del campo de la tabla o de sus enlazadas.

Las funciones de escritura en disco en tablas, cuando se trata de tablas en memoria requiere abrir transacción para que las operaciones se reflejen en la tabla.

Funciones de navegante

VRegisterList loadMasters( String szIDPrimarioCampo )

Devuelve la lista de registros maestros del campo enlace a maestro. Devuelve los maestros sin repetición, aunque varios registros apunten al mismo maestro sólo lo devuelve una vez. Equivale al comando cargar maestros y a navegar a maestros.

Parámetros:

  • szIDPrimarioCampo: cadena que contiene el identificador del campo con enlace a tabla maestra.

Este comando está optimizado de modo que se pasa la lista de registros al servidor para que la carga de sus maestros se realice en 3er plano, excepto en el caso de las tablas en memoria, que se hará en primer plano.

VRegisterList loadPlurals( String szIDHistorico )

Devuelve una referencia a un objeto de la clase VRegisterList que se genera internamente con la lista de registros del enlace plural de la lista de registros actual. Equivale al comando de instrucción de proceso de Velneo cargar plurales y a navegar a plurales del menú de lista de vClient.

Al ser una referencia a una lista de registros interna, una segunda ejecución de la función loadPlurals provocará que se destruya la referencia anterior y se cree otra nueva. Para guardar esta lista debemos crear un nuevo VRegisterList y mediante la función append añadir a esta nueva lista los registros de la lista interna devuelta por loadPlurals().

Este comando está optimizado de modo que se pasa la lista de registros al servidor para que la carga de sus plurales se realice en 3er plano, excepto en el caso de las tablas en memoria, que se hará en primer plano.

Ver ejemplo: 5. Creación de VRegisterList para guardar la lista interna obtenida con loadPlurals()

Parámetros:

  • szIDHistorico: cadena que contiene el identificador del plural.

Funciones varias

Boolean runProcess( String szIdRefProcess )

Ejecuta un proceso Velneo o JavaScript.

Parámetros:

  • szIdRefProcess: cadena que contiene el identificador referencia del proceso ("Alias_proyecto/ID_proceso").

Serialización

Boolean loadFromData( VByteArray buffer )

Carga en el objeto de la clase VRegisterList una lista de registros previamente serializados en un byte array con la función saveToData().

La función devuelve true si la carga se ha realizado correctamente.

Si el VRegisterList no tiene asignada una tabla esta función se encarga de asignarle automáticamente la tabla y luego le añade los registros a la lista.

Parámetros:

  • buffer: objeto de la clase VByteArray que contiene los registros serializados.

Boolean loadFromFile( String path )

Carga en el objeto de la clase VRegisterList una lista de registros previamente serializados en un fichero en disco con la función saveToFile().

La función devuelve true si la carga se ha realizado correctamente.

Si el VRegisterList no tiene asignada una tabla esta función se encarga de asignarle automáticamente la tabla y luego le añade los registros a la lista.

Parámetros:

  • path: senda del fichero en disco que contiene los registros serializados.

VByteArray saveToData()

Almacena en un objeto de la clase VByteArray la serialización de la lista de registros que contiene el objeto de la clase VRegisterList.

Boolean saveToFile( String path )

Almacena en un fichero en disco la serialización de la lista de registros que contiene el objeto de la clase VRegisterList.

Parámetros:

  • path: senda del fichero en disco donde se almacenarán la lista de registros serializados, si el fichero no existe se crea y si existe se limpia.

Funciones de JSON

Object toJSON( Array aszIDs )

Convierte una lista de registros de una tabla en un objeto JSON debidamente formateado, permitiendo definir si se incluyen todos o algunos campos.

Equivale al comando de instrucción de proceso generar JSON desde lista.

Parámetros:

  • aszIDs: array con los identificadores de los campos de la tabla con los que queremos generar el JSON. Si queremos incluirlos todos, usaremos un array vacío: []

Devuelve un Objeto JavaScript con los siguientes campos:

  • ok: booleano con el retorno de ok.

  • json: cadena de texto con formato JSON con el resultado.

  • errors: cadena de texto con formato array de JSON con los errores.

Podremos obtener estos campos del objeto JavaScript del modo siguiente:

Ejemplo 1:

var operacion = theRegisterListIn.toJSON( [] );
var bOk = operacion.ok;
var szJson = operacion.json;
var errores = operacion.errors;

Ejemplo 2:

var operacion = theRegisterListIn.toJSON( ["ID","NAME", "PVP"] );
var bOk = operacion["ok"];
var szJson = operacion["json"];
var errores = operacion["errors"];

Funciones de CSV

String toCSV( Array aszIDs, Boolean bHeader, String szRegSep, String szValSep, String szNumberFormat )

Convierte una lista de registros de una tabla en una cadena con formato CSV (valores separados por comas).

Parámetros:

  • aszIDs: array con los identificadores de los campos de la tabla con los que queremos generar el CSV. Si queremos incluirlos todos, usaremos un array vacío: []

  • bHeader: permite configurar si queremos que se incluyan en la primera línea los identificadores de los campos (true) o no (false). Si lo dejamos vacío, los incluirá.

  • szRegSep: permite configurar qué carácter se usará para separar los registros en el CSV. Si se deja vacío, usará el salto de línea.

  • szValSep: permite configurar qué carácter se usará para separar los campos en el CSV. Si se deja vacío, usará la coma (,), el estándar para CSV.

  • szNumberFormat: permite configurar en qué formato que generarán los campos numéricos en el CSV. Los valores que podemos usar son:

    • "L": local.

    • "C": moneda.

    Si lo dejamos vacío, tomará el valor "L". Cualquier otro valor será tomado como sin formato.

toCSVfile( String szFileName, Array aszIDs, bool bHeader, String szRegSep, String szValSep, String szNumberFormat )

Genera en disco un fichero con formato CSV (valores separados por comas) a partir de una lista.

Parámetros:

  • szFileName: senda completa del fichero a generar, incluyendo nombre y extensión.

  • aszIDs: array con los identificadores de los campos de la tabla con los que queremos generar el CSV. Si queremos incluirlos todos, usaremos un array vacío: []

  • bHeader: permite configurar si queremos que se incluyan en la primera línea los identificadores de los campos (true) o no (false). Si lo dejamos vacío, los incluirá.

  • szRegSep: permite configurar qué carácter se usará para separar los registros en el CSV. Si se deja vacío, usará el salto de línea.

  • szValSep: permite configurar qué carácter se usará para separar los campos en el CSV. Si se deja vacío, usará la coma (,), el estándar para CSV.

  • szNumberFormat: permite configurar en qué formato que generarán los campos numéricos en el CSV. Los valores que podemos usar son:

    • "L": local.

    • "C": moneda.

    Si lo dejamos vacío, tomará el valor "L". Cualquier otro valor será tomado como sin formato.

Ejemplos

1. Navegante / Plurales de todos

var facturas = theRegisterListIn.loadPlurals("FACTURAS");
theRegisterListOut.append(facturas)

2. Recorrer la lista modificando

if (theRoot.beginTrans("Titulo"))
{
    for( var x=0; x < theRegisterListIn.size(); x++)
    {
        var registro = theRegisterListIn.readLockingAt(x);

        if (registro.isOK())
        {
            registro.setField( "IDCAMPO1", dato );
            registro.setField( "IDCAMPO2", hoy );
            .....
            registro.modifyRegister();
            if (!registro.isOK())
                ... //mensaje de error
        }
    }
    // No hace falta hacer theRoot.submit(), lo hace Velneo automáticamente
}

3. Multipartir

var curView = theMainWindow.currentView();

if ( curView )
{
    if ( curView.root() )
    {
        var pvc = curView.root().dataView();

        if ( pvc.isListType() )
        {
            var lista = new VRegisterList( theRoot );
            pvc.getList( lista );

            var aListas = lista.multiSplit("SEXOS.NAME");

            for( x in aListas )
            {
               var newView = theMainWindow.addDataView( VObjectInfo.TypeQmlList, "CINE/LISTAQML", aListas[x] );
               newView.setTitle( aListas[x].title() + " " + aListas[x].size() );
            }
        }
    }
}

4. Creación de un nuevo VRegister para guardar el registro interno leído con readAt()

var registro1 = new VRegister( theRoot );
var registro2 = new VRegister( theRoot );

registro1.copyFrom( lista.readAt( 0 ) );
registro2.copyFrom( lista.readLockingAt( 1 ) );

// Así tendremos guardados los registros en registro1 y registro2 sin que le afecten otros readAt() o readLockingAt().

5. Creación de VRegisterList para guardar la lista interna obtenida con loadPlurals()

var listaPlural1 = new VRegisterList( theRoot );
listaPlural1.setTable( "aliasApp/TABLA" );

var listaPlural2 = new VRegisterList( theRoot );
listaPlural2.setTable( "aliasApp/TABLA" );

listaPlural1.append( theRegisterListIn.loadPlurals( "PLURAL1" ) );
listaPlural2.append( theRegisterListIn.loadPlurals( "PLURAL2" ) );

// Así tendremos en listaPlural1 y listaPlural2 los registros plurales sin que le afecten otros loadPlurals().

6. Equivalente a un cargar lista y recorrerla en modo de solo lectura

var lista = new VRegisterList(theRoot);
lista.setTable("miapp/MAESTROS");
lista.load("ID", []);
for ( i = 0; i < lista.size(); i++ )
{
	lista.readAt(i);
}

Última actualización