Las dos maestras las tengo relacionadas con un doble plural, mediante la tabla intermedia histórica.
En el formulario de TAREAS muestro dos rejillas, una al lado de la otra, una con los TAGS YA ASIGNADOS que tiene la tarea (basada en TAGS_TAREAS), y otra con los TAGS DISPONIBLES para poder asignarle (basada en TAGS). La idea es que pueda asignar TAGS arrastrando con el ratón (usando un drag&drop). Al asignar (arrastrar) un TAG, quiero que aparezca en la rejilla de TAGS ASIGNADOS y desaparezca de la rejilla de TAGS DISPONIBLES. Al cerrar y volver a entrar en la tarea, quiero que esta última rejilla me siga mostrando solamente los TAGS DISPONIBLES, no todos.
Ya lo tengo todo hecho y me funciona. Lo que me ha dado algún problema ha sido la rejilla de TAGS DISPONIBLES, ya que no tiene que mostrar toda la tabla como origen, sino solamente los tags que no tienen asignada esta tarea en particular (que no disponen del registro en la tabla histórica). Esto lo he solucionado mediante un proceso que alimenta la rejilla, en el que cargo la lista de todos los TAGS, y para cada uno cargo sus plurales; luego comparo el ID de la tarea con el de la actual, y si no coindice añado la ficha a la salida. Estoy aprendiendo V7 y me surgen muchas dudas. Me da la impresión que ha quedado un proceso un poco largo y complicado. ¿Se podría haber resuelto esto directamente en la base de datos, mediante enlaces o índices, de una forma más elegante?
Pues mira yo lo hubiese hecho simplemente generando una actualizacion desde TAGS_TAREAS A TAGS, la cual acumule en un campo x la cantidad de tareas en las que aparece el tag, ya despues mediante una busqueda o un filtrar lista tomo la lista de TAGS y solo escojo aquellos que tienen 0 en el campo x.
Buenos días Cristian. Muchas gracias por tu ayuda.
He estado probando lo que tu me has dicho, pero me temo que sería útil para otra caso distinto:
Usar la actualización y acumular en un campo de TAGS lo que haría sería controlar los TAGS que nunca se han usado en general. Lo que a mi me interesa controlar son los TAGS NO USADOS para cada tarea individual.
Lo he estado mirando más y la verdad no se me ocurre nada para solucionarlo directamente desde la base de datos.
Os pongo el proceso que he hice para cargar las lineas de la rejilla de TAGS NO USADOS, pero tengo muchas dudas. Me da la impresión que esto ha de ser muy lento, ya que se patea TODOS los registros de las tablas TAGS y TAGS_TAREAS. Supongo que en este caso, ejecutarlo en 3er plano sería muy conveniente.