Oracle - Bloqueo de formularios

 
Vista:

Bloqueo de formularios

Publicado por XSCTec (6 intervenciones) el 20/03/2007 10:54:01
Tengo una aplicación que está hecha en Forms. Cuando se abre una opción/formulario donde se pueden hacer inserts/updates en una tabla, cuando se abre otra opción/formulario en la que se pueden hacer inserts/updates (sin cerrar el primer formulario), el primero se bloquea, no dejando introducir nada en los campos de texto ni nada. El segudo sí está operativo, y cuando cierro el 2º formulario el primero vuelve a dejar trabajar con normalidad.
He buscado en Internet información, he encontrado algo de modos exclusivos/no exclusivos para acceder a tablas, pero lo que encuentro es para Visual Fox Pro. Y me gustaría saber si mi problema es con estos modos o lo que os comento puede ser por otra cosa, y si hay manera de evitarlo.
Gracias por vuestra ayuda.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Bloqueo de formularios

Publicado por XSCTec (6 intervenciones) el 20/03/2007 16:07:05
Bueno, el problema me viene porque hay este error:
FRM-41008 Undefined function key. Press CTRL+F1 for list of valid keys.

Si pulso CTRL+F1 y cierro la ventana o muestro un message ('loquesea') y la cierro, entonces las cosas vuelven a la normalidad.

He intentado capturar con ON-ERROR (a nivel de formulario) el error y hacer alguna cosa (como la del mensaje) que se ejecute al saltar el error y una vez termine de hacer eso deje el formulario operativo para el usuario. Aunque el mensaje sería una solucion, no quiero que al usuario le aparezca una ventana a la que tenga que pulsar para que se cierre. Una solución que se me ocurrió es a ver cómo meter un mensaje en la barra de estado, de manera que supongo causaría el mismo efecto, o bien abrrir una ventana y cerrarla de manera que el usuario no se percate de la existencia del error.

El problema con este error es que apenas hay información sobre él, y salta en ocasiones que no debería, según he podido leer (es un bug de Oracle, lo único que he leido es que no parece haber una solución aún y que Oracle no parece estar por la labor de solucionarlo, así que no sé).

Si alguien puede darme alguna solucion, aunque sea algo cutre, lo agradecería.

Gracias!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Bloqueo de formularios

Publicado por mad (88 intervenciones) el 20/03/2007 23:14:23
No se realmente cual es el problema, pero por lo que he podido deducir, en el ON-MESSAGE o en el ON-ERROR puedes controlar el error con el codigo de error y/o mensaje y hacer un NULL, por lo que el usuario no se enteraria de tal error y/o mensaje. Algo como esto:

TRIGGER ON-ERROR

DECLARE
N_ERROR NUMBER := ERROR-CODE;
BEGIN

IF N_ERROR = 'AL ERROR QUE TE ESTA DANDO' -- NUMERICO THEN
NULL;
ELSE
TRATA-LOS-ERRORES; --PROCEDIMIENTO QUE TRATA ERRORES.
END IF;

END;

No sé si esto lo que buscas, pero bueno, aqui queda.
Salu2
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Bloqueo de formularios

Publicado por XSCTec (6 intervenciones) el 21/03/2007 09:27:00
Gracias por el interés. Te explico el problema un poco mejor y más o menos lo que he conseguido ver.

Si el usuario pulsa la combinación CTRL+F1 como dice el mensaje de error (el mensaje aparece en la barra de estado) y cierra esa ventana deja de estar el bloqueo sobre las casillas de los campos.
Si trato el error con algo así en ON-ERROR (a nivel de formulario):
if (error_type = 'FRM' and error_code = 41008) then
message ('');
end if;
se abre un mensaje y si el usuario le da para que se cierre el formulario vuelva a quedarse desbloqueado.
Mi objetivo es conseguir el efecto que se consigue cuando se abre un mensaje o ventana y lo cierra el usuario, pero evitando que sea el usuario quien haga el proceso,
Lo suyo sería abrir una ventana y que se cerrara automáticamente como mucho el usuario veria una especie de pantallazo, pero nada más (cosa que de momento sería un mal menor).
ON-ERROR tiene ciertas limitaciones en cuanto a qué se puede hacer dentro, que ahora estoy intentando ver todas cuales son y qué se me permite hacer, por ejemplo me he encontrado que go_item o go_block no me los deja utilizar ahí dentro, compila, pero a la hora de que salte el error y llegar a ese comando me salta un error diciéndome que no puedo utilizarlos ahí.
Me gustaría conseguir el efecto que he comentado, pero de momento no se me ocurre como. Es un bug de Oracle Forms por lo que he leído por ahí, y lo que quiero es, aunque sea con una chapucilla, saltarlo, o tratarlo para que el usuario no se encuentre con el problema. Si alguien sabe como tengo que hacerlo se lo agradecería mucho porque me está haciendo perder bastante tiempo.

Gracias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar