jueves, 9 de octubre de 2008

go_block no permitido en los triggers POST

Oracle forms: No me deja hacer go_block

Oracle forms: Como puedo ejecutar una consulta (execute_query) de un bloque de datos cuando cambio el valor de un item en otro bloque de datos?

Oracle forms: execute_query de otro bloque en trigger post-block

Oracle forms: no permite hacer go_block execute_query en el post-block

SITUACIÓN:
El otro día me volví a encontrar con un problema parecido. Tengo dos tablas, una con los elementos de un menú y otra con la composición del menú. En la composición tengo un identificador de elemento que es el padre y otro que es el hijo, uno que indica el orden y otro el nivel de menú. Yo quería mostrar en un bloque los padres y en otro los hijos del padre que seleccionemos. La cosa parece clara... los hijos son aquellos elementos que en la table composicion tienen como padre el elemento del bloque padre pero... Como puedo hacer una relación a través de una tabla externa? No puedo... oracle forms no me deja.

Lo primero que uno piensa es en hacer un go_block ('hijos'); execute_query; en el trigger post-block o post-query del padre pero... forms no nos deja. ¿Que hacemos?

EXPLICACIÓN:

A Oracle forms a saber porque motivo de diseño no le da la gana permitir facilidades así. Esperemos que en la próxima y no muy anunciada versión de Oracle forms 11 lo arreglen pero de momento...


SOLUCIÓN:

La solución es poner el go_block ('hijos'); execute_query; en el trigger WHEN-NEW-ITEM-INSTANCE del bloque padre asi cuando se valide cualquier cosa del bloque padre nos ejecutará la query en el hijo. Esto no nos crea ninguna relación padre hijo que haga comprobaciones de integridad o que nos borre en cascada y debemos ser nosotros quien lo programemos pero nos permite salir del apuro.

Puede , segun la situación que esta solución nos meta en un bucle sin salida por lo que os remito a mi otro post parecido donde cuento como saber el elemento actual para filtrar el trigger y arreglar el problema del execute query en el post-block de oracle forms

Si lees este post u otros y te sirve de ayuda dejame un comentario porque ya no se si esto sirve a alguien o escribo para llenar de bytes internet. Grácias :P



Que versión de Oracle Forms usas?