viernes, 27 de junio de 2008

Oracle forms ¿cómo quito el mensaje de guardar? o cambiar estado del registro a QUERY

Oracle forms ¿cómo quito el mensaje de guardar?

Oracle forms Desactivar mensaje de guardar

Oracle forms Cuando cambio de bloque me pide guardar

Oracle forms Cuando cambio de bloque no quiero que me pida guardar

Oracle forms: cambiar estado del registro a no modificado

Oracle forms: cambiar estado del registro a QUERY


Situación:

Cuando en un bloque de datos vinculado a la BBDD hacemos un cambio directa o indirectamente y cambiamos de bloque, de registro o ciertas opciones más automáticamente nos sale un mensaje de Oracle forms en que nos pide si queremos o no guardar los cambios.




Explicación:

Muchas veces no nos interessa eso porque el bloque nos interesa que esté vinculado a la BBDD (base de datos) para hacer las selects con las ventajas del autofiltrado pero no queremos que sirva para guardar en BBDD. Lo lógico sería hacer que no se pueda hacer insert o update (insert/update allowed) pero entonces solo nos dejaría escribir en el bloque en caso de estar en modo enter-query y claro, para crear registros pues no nos sirve.


Solución:

Una primera solución es poner el nivel de alertas a 5 aunque no se porque en ciertas versiones y ciertos casos eso no elimina el error. Intentadla por si acaso:

:system.message_level := 5;

La otra solución consiste en crear una variable auxiliar que nos indique si ese registro se ha modificado o no y manualmente cambiar el estado del registro de modificado a no modificado para que oracle forms al hacer las comprobaciones crea que no hay ningun registro modificado y por lo tanto no pedirá guardar. Lo más fácil es hacer un triger de post-change a nivel de bloque y en el interior poner algo como


begin
--si el estado del registro no es ‘QUERY’ es que lo han modificado
if get_record_property (:system.cursor_record,'blk_personas',status) <> 'QUERY' then
-- guardo en mi variable para saber que si se ha modificado
:blk_personas.modificado:=1;
--le hago creer a forms que no devolviendole al estado QUERY
set_record_property(:system.cursor_record,'per',status,query_status);
end if;
end;


No hay comentarios:

Que versión de Oracle Forms usas?