Buenas a todos, vengo con una pequeña duda de vJavascript, estaba buscando en la documentación, pero bueehh…
tengo una cadena de este estilo “1,3,6,19,21” (ID’s), la paso a un array y necesito cargar la lista de estos registros para eliminarlos, imagino que la única es cargarlos uno por uno no? como cualquier proceso… Esta parte ya la tengo lista con un while recorriendo el array. pero por si hay una manera, pues no está de mas preguntar.
Lo otro es como hacer un “recorrer lista eliminando fichas” en vJavascript, por los momentos lo hice con readAt() y eliminando, pero como hago para eliminar la lista que cargué?
No entiendo tu pregunta ( … como hago para eliminar la lista que cargué?).
Tienes un array de ID’s y quieres borrar físicamente los registros de la tabla.
Tienes 2 opciones, entre otras muchas:
1 - Recorre el array y vas instanciando VRegister y usando deleteRegister()
2 - Rellena una lista VRegisterList desde el array y haces lo mismo que en la opción 1, recorre la Lista
Yo creo que siempre tendrás que recorrer las Listas de forma secuencial para hacer operaciones en disco.
No existen todavía operaciones globales como VRegisterList.deleteAll()
Para gestión de Listas de ID’s guardadas en Local tenemos nuevas funciones en la 7.16.
Buenas tardes Paco, haz contestado a mi pregunta, tal vez no tan clara como creia que estaba jeje
Esto es lo que estoy haciendo, alguna corrección, un paso que podría saltarme o un comentario?
seleccionados = seleccionados.split(",");
var nselected = seleccionados.length;
if(nselected){
if (theRoot.beginTrans("eliminamos los registros")){
while(nselected--){
var registros = new VRegisterList(theRoot);
registros.setTable("BeneficiosDat/ANTIGUEDADES");
registros.load("ID", [seleccionados[nselected]]);
var antiguedad = registros.readAt(0);
antiguedad.deleteRegister();
}
theRoot.commitTrans();
}
PD: por ser nivel 1 no tengo acceso al vServer, vdataclient y vinstallbuilder. Así que por los momentos me toca quedarme todavía con la 7.15 que al menos tengo los componentes.
Está bien aunque puedes hacerlo también usando la opción 1ª, sin necesidad de usar VRegisterList
seleccionados = seleccionados.split(",");
var nselected = seleccionados.length;
var antiguedad = new VRegister(theRoot);
antiguedad.setTable(“BeneficiosDat/ANTIGUEDADES”);
if(nselected){
if (theRoot.beginTrans(“eliminamos los registros”)){
while(nselected–){
if (antiguedad.readRegister(“ID”, [seleccionados[nselected]], VRegister.SearchThis)) {
antiguedad.deleteRegister();
};
};
theRoot.commitTrans();
};
};
Si vas a hacer consultas sobre el ID, es más lógico usar VRegister.readRegister() porque el resultado siempre va a ser uno o ninguno. Por lo demás los dos códigos son perfectamente válidos.