Cargar Lista desde Javascript - list.load( "ID", [])


([N1] angelcastillo) #1

Cargar Lista desde Javascript - VRegisterList y función load( String szIdIndice, Array aKeyPartsResol )

Buenas tardes a todos, estoy algo confuso con unos de los parametros de la función ‘load’ de VRegisterList.

En la documentación dice:
Boolean load( String szIdIndice, Array aKeyPartsResol )
aKeyPartsResol: Array que contiene las resoluciones de cada una de las partes del índice.

Mi objetivo es cargar una lista pasandole un ID por indices como haría desde codigo velneo pero en javascript, y cada vez que intento pasar un valor para este parametro, no consigo que me cargue nada en la lista. Este es mas o menos un resumen de lo que tengo de código:

var listReg = new VRegisterList( theRoot);
listReg.setTable("Mi_alias/ID_TABLA");
var idRegistro = 5;
<strong>listReg.load("ID", [idRegisto]);</strong>
var registro = listReg.readAt(1);

Siempre me la devuelve vacia y yo espero almenos un registro. Si pongo “listReg.load(“ID”, []);” me devuelve todos los registros. Aquí está mi pregunta: ¿como funciona dicho parametro?, ¿que tipo de valores interpreta: string, int?, si es un array ¿cuantos valores le puedo pasar?.

Talvez sea mi desconocimiento en profundidad de los indices lo que provoque mis dudas, pero si alguien pudiera darme alguna guia o razomiento de su uso estaría muy agradecido. Gracias.


([N1] cristianvg2003) #2

Hola,

Tu codigo esta bien solo que estas leyendo desde la posición 1, intentalo desde la posición 0


([N1] angelcastillo) #3

disculpa si se que hay que empezar en 0. Suelo usar un for( var i=0; i<list.length; i++){ …readAt(i)…} y siempre empiezo en 0. Gracias Cristian

Alguna ayuda mas?


([N3] pacosatu) #4

Hola angelcastillo.

La contestación de Cristian es correcta.

Se supone que la instrucción -> listReg.load(“ID”, [idRegisto]) siempre devuelve 0 o 1 registro ya que el índice ID es único.
Por lo tanto, siempre debes usar -> var registro = listReg.readAt(0); para indicar que quieres leer el único y primer registro devuelto por la búsqueda.

Saludos
Paco Satué


([N1] wikan) #5

No se si lo has puesto por poner o no te está devolviendo error, pero list.length es totalmente incorrecto, sería list.size();

Es posible que ni siquiera estés entrando al for.


([N1] angelcastillo) #6

Vaya cantidad de incoherencias he escrito, eso me pasa por escribir con prisas. Disculpad todos.

Gracias por tu colaboración Paco, sé que la respuesta de Cristian es correcta, lo que yo quería decir en mi post anterior es que tenía razón Cristian y que había sido un error mío al escribir. Sé que los índices empiezan en 0 y así lo tengo en mi código.

Wikan gracias a ti también por ayudar, lo que me dices es verdad list.size(), .length red para arrays y otras cosas. Otro error mio.

————————
var listReg = new VRegisterList( theRoot);
listReg.setTable(“Mi_alias/ID_TABLA”);
var idRegistro = 5;
listReg.load(“ID”, [idRegisto]);
var registro = listReg.readAt(0);
————————

List.size() siempre me devuelve tamaño 1. Sin embargo la variable registro está vacía siempre.

Mañana volveré a revisar el código, sé que mi problema es el Id que paso por el load, o eso parece.

Gracias a todos, haber si alguien me aclarar algo de esto:¿como funciona dicho parametro?, ¿que tipo de valores interpreta: string, int?, si es un array ¿cuantos valores le puedo pasar?.

Seguiré atento, gracia


([N1] wikan) #7

Y como sabes que el registro está vacío. Si te devuelve 1, es que lo has cargado. A lo mejor el problema está en como estás accediendo al registro y das por hecho que está vacío.

Ahora hay un depurador de javascript, puedes usarlo para comprobar.
Si haces un
alert(registro.fieldToInt("ID"));
Al final de tu código, te devuelve lo que buscas??