Rutina js, asociar rejilla con formulario


([N3] blavan) #1

Hola, por favor a ver que me sucede:

Tengo una rutina JS que en su día publico PACO SHE en este foro y que me funciona correctamente en varias soluciones y es para que al moverme (arriba, abajo) por una rejilla se visualice un formulario asociado y desde ahí actualizar la ficha, muy cómodo y le gusta a los usuarios pero me ha sucedido lo siguiente:

Cree una tabla histórica y claro ahora al intentar aplicar esa rutina no tengo campo ni indice de enlace que me indique la ficha posicionada

Solución: creo un campo id con un indice id y lo alimento por proceso PERO la instrucción var oRegistro = oLista.readAt(0) no me funciona, el campo ID que cree, lo subí a la primera posición de la tabla

A continuación escribo la rutina

var oForm = theRoot.dataView();
var oLista = new VRegisterList(theRoot);
// Asignamos la Tabla asociada a la Lista
oLista.setTable(“datos/COMPETICION”);
// Ejecutamos la búsqueda del ID

oLista.load(“ID”,[theRoot.varToInt(“ID_COMP”)]);
;
if (oLista.size() > 0)
{
var oRegistro = oLista.readAt(0);
// Referencia al control Vista de datos del subformulario
var oSubForm = oForm.control(“COM_F7”);
//ert(oSubForm);COM
if (oSubForm)
{
oSubForm.setRegister(oRegistro);
}}


([N3] pacosatu) #2

Hola Blavan.

Que la tabla sea histórica no significa que no funcione ese código. La única condición es que exista un Índice único que normalmente estará compuesto por 2 o más campos.

En tu caso, has creado un campo ID que me imagino será un contador que rellenas manualmente. De todas formas yo no lo llamaría ID, porque puedes tener problemas en otros formularios, ya que Velneo se creerá que es una tabla maestra.

En cualquier caso la instrucción oLista.load(“ID”,[theRoot.varToInt(“ID_COMP”)]); debe devolver solo y solo un registro. Comprueba que el valor de ID_COMP es el correcto.

Saludos
Paco Satué


([N3] blavan) #3

Gracias Paco, lo resolví antes de leer tu correo, creando una nueva tabla con ID y cargándola por proceso porque
con el tubo de lista no me aclaro, ya me funciona
Pero no obstante el la instrucción var oRegistro = oLista.readAt(0);
el 0 de readAt se refiere a … Gracias