Modificar variable local de Rejilla


([N1] albertomr) #1

Hola a todos,

En un formulario tengo 36 veces la misma rejilla alimentada por 36 procesos distintos que filtran la tabla por diferentes fechas. Es decir, cada rejilla representa los registros de la tabla con vencimiento en los 36 días laborables de las próximas 6 semanas. A pesar del la cantidad de rejillas, el formulario se carga con cierta rapidez gracias a los procesos en 3º plano que alimentan las rejillas, una tabla en memoria donde se almacenan las fechas y una función para acceder a estas fechas por posición. Hasta aquí todo funciona bien.

El problema lo tengo cuando intento programar el Drop para poder pasar los registros de una rejilla (fecha xx-xx-xx) a otra (cambiar fecha xx-xx-yy por fecha yy-yy-yy), para lo cual necesito identificar la rejilla para saber la fecha que se ha de asignar.

Parto de la idea de que una variable local definida en la rejilla solo tiene ámbito en esa rejilla, pero no en las otras 35 rejillas del formulario que como es lógico también tienen la variable con el mismo nombre. Es decir, entiendo que el ámbito de cada una de las 36 variables locales es el de su rejilla, aunque tenga el mismo nombre en las 36 rejillas y estén en el mismo formulario, pudiendo almacenar cada una de las 36 variables un dato diferente. Si estoy equivocado, por favor decidmelo.

Mi intención es asignar a cada una de esas variables de la rejilla, el numero de posición, es decir, la variable PSCN_DIA de la primera rejilla, debería almacenar el numero 1, la variable PSCN_DIA de la segunda rejilla el 2, etc. En el proceso que alimenta cada rejilla he creado un Manejador de objeto y un Set variable local de objeto para intentar asignar este valor, pero no funciona. Podéis ver el proceso en imagen adjuntada.

¿Como puedo asignar valor a cada una de las 36 variables de cada rejilla?

Mi intención es definir en el Drop un Manejador de objetos y Get variable local de objeto para mediante la función pasar el parámetro posición y conocer la fecha para modificarla en el registro del Drag and Drop

Gracias de antemano por vuestras respuestas.

[attachment=26157,2038]




([N1] albertomr) #2

Por favor, una ayudita.


([N3] blavan) #3

Hola sin meterme en tu problematica y así a bote pronto en ela imagen de codigo que envias falta Disparar Objeto, lo debes escribir a con tinuación de la linea set variable…


([N4] eic) #4

Hola.

La instrucción Crear manejador de objeto te crea “otra instancia” de ese objeto, no te toma el objeto que ya existe. No te sirve para lo que quieres.

En una situación parecida a la que planteas, con la misma funcionalidad (pero con sólo 7 rejillas, una por cada día de la semana), acabé creando 7 rejillas distintas, una para cada día. La fecha del registro que arrastraba era fácil de sacar, pero el problema, como bien dices, es saber en qué rejilla estás haciendo drop. Y eso, al menos que yo sepa, no es posible.

Saludos,

Fran Varona


([N1] albertomr) #5

Gracias Benito, tienes razón, pero lo he probado y ocurre lo que dice eic.eurosistemas.

Gracias también a eic.eurosistemas, esa solución es la que había adoptado inicialmente, pero cuando tuve que modificar la rejilla añadiendo un nuevo campo a mostar, me supuso hacerlo en 36 rejillas, cuando de la otra manera, con cambiarlo en una rejilla, se reflejan los cambios en todas las instancias de esa rejilla. No es muy operativo tener 36 procesos de carga de la rejilla, 36 rejillas diferentes y 36 procesos drop diferentes. Cualquier modificación en uno supone modificar los otros 35 para que hagan lo mismo pero en otra fecha.

Entiendo que los 36 procesos para alimentar las rejillas es inevitable, pero si consiguiera dar valor a esa variable para cada una de las 36 instancias de las rejilla, me evitaría las 36 rejillas y sus 36 procesos drop, Solo una rejilla y un proceso Drop que toma el valor de esa variable seria suficiente.

Bueno, si alguien tiene alguna idea alternativa, lo agradeceré. De momento seguiré trabajando en las 36 rejillas diferentes para seguir avanzando en el proyecto.

Muchas gracias de nuevo a los que me habéis contestado.


([N1] Pepeto) #6

La respuesta es bien sencilla, creo:

Cada rejilla muestra solo los registros de una fecha concreta, luego, para saber en que rejilla te encuentras, bastará con leer el primer registro de la rejilla y comprobar su fecha.

El problema lo tendras cuando alguna de las rejillas este vacía, pero para eso hay que pensar un poco mas, si se me ocurre algo, ya lo indicare.

un saludo
José Luis.
http://www.ascsl.com


([N1] albertomr) #7

Gracias Pepeto, pero efectivamente con bastante frecuencia puede haber rejillas vacias. Ademas no me vale la fecha, necesito un numero que identifique la posición de la tabla, ya que las fechas las guardo en una tabla en memoria, de forma que con unos botones puedo avanzar y retroceder en el calendario semanas o meses (sumando 7 / 30 dias a cada una de las fechas). Si obtengo un numero de posición de la regilla que coincide con el ID de la fecha en la tabla en memoria, lo tengo solucionado independientemente de la fecha que temporalmente tenga el registro.