Hola estoy peleando con un formulario que muestra una rejilla, cuando doy de alta con la toolbar de la rejilla un registro internamente se genera otro más, pero al aceptar sólo muestra el generado en el formulario y no el generado por proceso.
Existe alguna señal, u otro metodo para forzar el refresco de la rejilla, he probado on show, y otro pero no lo consigo…
Alguien se le ocurre algo ???
Tengo que cerrar y volver a abrir el formulario para que aparezcan todos los registros
Hola, ¿has probado con un simple botón de refrescar en el formulario donde tengas la rejilla?. Con un simple “Interfaz Recalcular (CONTROL)” lo tienes solucionado.
Se trata de hacer algo transparente al usuario, es una entrada de asientos en contabilidad y no puede estar pulsando continuamente para ver por donde va, debe ser algo automático
Tu mismo has dicho que se genera por proceso, pues en ese proceso le metes un interfaz:reacalcular, o si el formulario usa una vista de datos supongo que la cargas en el on show ? con un evento pues vuelves a ejecutar el evento y listo
“Con la iglesia hemos topado, amigo Sancho” como diría Don Quijote de la Mancha.
Te acabas de encontrar con uno de los problemas de Velneo: el contexto en el que te encuentras y la visibilidad de otros controles… y no tiene fácil solución.
Es probable que la rejilla la tengas en una vista de datos y tengas una toolbar asociada a la rejilla. Desde esa rejilla darás altas y desde el alta (o bien en en botón aceptar o bien en el trigger de tabla) darás nuevas altas en función de algún campo. El problema es que esas nuevas “altas” no se enteran del contexto en el que han sido creadas, por lo tanto no se visualizar hasta que no se vuelve a cargar la vista de datos… cosa que desde el proceso desde el que son creadas, no se puede hacer.
De momento no te queda otra que poner un nuevo botón en la toolbar para “refrescar” la vista de datos y que aparezcan los nuevos registros creados en el proceso (creo que Velneo lo hace así en los cobros/pagos de vErp)
Sí, es cierto que refrescar una Rejilla tiene su problemática, pero no es problema de Velneo sino de entender cómo funciona ese Objeto.
La Rejilla no es más que un contenedor “estático” de registros (Lista en memoria) que previamente hemos rellenado mediante la salida de un Proceso. El conjunto Proceso/Rejilla es la Vista de datos. Contenedor “estático” significa que no hay eventos automáticos que añadan o quiten registros, aunque sí es capaz de reflejar los cambios que se producen en las distintas columnas que están conectadas a los campos de la tabla en la caché de vClient. Por ejemplo, si eliminamos un registro en el servidor, la rejilla mostrará al cabo de un rato una fila con todas las columnas vacías.
Entonces debe ser el programador el que habilite la manera de refrescar la Lista de registros mostrados en la Rejilla. Velneo nos facilita ese trabajo cuando usamos la Toolbar y las acciones asociadas a la Rejilla. De alguna manera Velneo detecta que hemos salido del formulario de edición con la opción Aceptar y añade la nueva ficha a la Rejilla. Algo parecido ocurre con la opción de Eliminar.
Si queremos refrescar la Rejilla desde cualquier parte de nuestra aplicación habrá que recurrir a diferentes métodos:
Desde la interfaz del formulario bastará casi siempre con usar el comando Recalcular rejilla que ejecuta de nuevo el proceso
Otra alternativa desde la interfaz del formulario serán los comandos Añadir ficha a la Lista y los comandos de Cesta
Desde el API obtenemos la referencia a la Lista de la Rejilla mediante la clase VRegisterList y usamos las funciones append, remove, …
Por supuesto, cualquier cosa antes que tener que cerrar y abrir de nuevo el formulario.
Tema un poco viejo, pero que igual muestra que poco se ha avanzado en la rejilla.
Justo tuve el mismo problema, un proceso que mueve registros hijos seleccionados de un maestro a otro. En la rejilla no “desaparecían” los que había movido, vi precisamente este hilo y la recomendación en general es: usar interface: Recalcular (objeto), donde el objeto es la rejilla.
Pues puse el comando al final… y los registras se seguían viendo, entonces tomé otro consejo que indican aquí, y ahí es donde radica mi pregunta sobre si lo hice OK o estoy haciendo algo que me pueda generar problemas que no he visto. Lo que hice, es al final de mi proceso que mueve los registros mandar llamar el proceso enlazado a la vista de datos con “Ejecutar proceso” y en seguida el “Interface: Recalcular”.
De acuerdo a lo que menciona Paco (o al menos eso entendí yo) el recalcular manda llamar en automático el proceso (?), pero en mi caso todo seguía igual. ¿Puede generar algún problema si llamo manualmente el proceso de la vista de datos?
Saludos.