Utilizando Forms developer. Tengo un bloque de datos maestro con los códigos de pedido, enlazado tengo otro bloque de datos detalle con las tuplas del pedido, donde muestro los códigos de los productos, precio y cantidad. Ahora bien, necesito mostrar la descripción del producto, el cual se encuentra en otra tabla. ¿Cómo puedo mostrar las descripciones de los productos?
1 respuesta
Respuesta de neosys
1
1
neosys, Desde versiones 6 de experiencia en entornos ORACLE (1990)
Es relativamente fácil lo que pides. Lo único que has de hacer, es que en el bloque detalle te crees un campo con la descripción del pedido (ha de ser de sólo lectura) y defines en el campo de código de producto un 'trigger' o disparador (creo que con el 'NEW-ITEM-INSTANCE' funcionará) que lo que haga es una consulta de la tabla de productos donde estraigas la descripción de este y la cargues (... INTO ...) en el campo de trabajo que te he indicado (para la descripción). Y voilà! Ya está!. Un Saludo (Ya me comentarás si te funciona, es que no tengo aquí instalado Forms y no recuerdo bien si es ese el nombre del trigger que carga la descripción).
Perfecto, recuerdo que hice algo parecido, pero creo que el elemento de texto de la descripción no estaba en el mismo bloque con lo cual solo me cargaba el primer elemento, o sea, el de current_record. Con when-new-item-instance no funciona, pero con post_change funciona de maravilla. Quisiera saber si me puedes aclarar un par de cuestiones más ya que veo que realmente eres un experto. .-La primera de ellas es que como puedo hacer más grande el área de ejecución de la aplicación en el explorador web. .-Y la segunda es que cuando hago un clear_block sobre un bloque donde esta permitida la inserción y actualización, después navego a otro bloque con go_block y me sale una ventana en la que me pregunta si deseo guardar los cambios, la cual no quiero que aparezca, lo he intentado con system_message_level := 25 pero no me funciona. ¿Tienes idea de como lo puedo solucionar? Gracias de antemano.
Me alegro que te haya orientado un poco en el problema, de todas formas, no utilices el trigger 'POST-CHANGE' hay otro que sustituye a este y que es el que has de utilizar (ya que según ORACLE, la tendencia es a eliminar este disparador que viene desde versiones Forms 3.0 y 2.3 -con las que hace ya bastante trabajaba- y lo marcan como obsoleto, aunque aun funcione, por eso no te dije que utilizases este disparador). Prueba con 'WHEN-VALIDATE-ITEM' a ver si en tiempo de 'Execute_Query' tambien se dispara. La segunda pregunta que me haces ahora de las nuevas, es bastante sencilla y debería de funcionar : en lugar de 'CLEAR_BLOCK;' coloca 'CLEAR_BLOCK(No_Validate);', con lo cual te tendría que dejar navegar a cualquier otro bloque sin avisos. El problema que tienes se debe a que algún atributo de ese bloque está definido como 'DATABASE' y al cargar información en él, el estado del registro ha pasado de 'QUERY' a otro. Sino, prueba a hacer antes del CLEAR_BLOCK según lo tienes ahora un MESSAGE( :Systems. Record_Status ) ... (si no recuerdo mal) y verás como el estado del registro ha sido cambiado. Y cuando hay cambios, al navegar te obliga a validar o no validar el registro cambiado. Ah! Y olvidate del 'system. Message_level' ya que hace restricción sobre el nivel de AVISOS INFORMATIVOS, no sobre el nivel de AVISOS DE ERROR O DE EVENTOS OBLIGADOS. Sobre las nuevas preguntas, en concreto la primera, entiendo que como 'ÁREA DE TRABAJO' te refieres al canvas o window, ¿no? Si es así, puedes poner : Set_Window_Property(FORMS_MDI_WINDOW, WINDOW_STATE, MAXIMIZE); Pero lo normal es trabajar con un Forms Inicial tipo MDI. Bueno, a ver si te sirve estos consejos. Los he hecho, al igual que el inicial, tirando de memoria ya que hace mucho tiempo que ya no programo, ahora me dedico más a temas de Administración y 'Tuning & Performance'.
Correctisimo, con clear_block(no_validate) resuelvo el problema que tenia. En cuanto al disparador When-validate-item, en un principio funciona correctamente, con lo cual, otra solución valida. En cuanto a lo que me refería de la zona de trabajo, no he podido solucionarlo. Te explio, cuando le doy a ejecutar la aplicación, se me abre una nueva ventana de internet explorer y se ejecuta jinitiator, pero la aplicación se ejecuta en una pantallita pequeña dentro del explorador, en la cual aparecen unas barras de desplazamientos tanto horizontal como vertical. Lo que me interesaría seria que esa pantallita fuese más grande y así poder ver como quedaría la aplicación sin tener que moverme con las barras de desplazamiento anteriormente mencionadas. Gracias de antemano. Un saludo.
A parte de utilizar el, para el tamaño de la ventana del navegador, tendrías que modificar los parámetros : width=valor height=valor Del fichero 'formsweb. Cfg' O si llamas a través del Servlet de Forms, pasarlos como parámetros de la misma URL que defines. Un Saludo y espero que te funcione perfectamente.
Correcto! Con lo que me dices he podido solucionar el problema del tamaño del la pantalla. Muchísimas gracias por tu ayuda y por el tiempo que te haya podido hacer perder. Saludos.