lunes, 28 de julio de 2008

Oracle Forms: FRM-41380: Cannot set the blocks query data source

Oracle Forms: FRM-41380: Cannot set the blocks query data source
Oracle Forms: set_block_property QUERY_DATA_SOURCE_NAME error
Oracle Forms: definir tabla de un bloque de datos
Oracle Forms: Error FRM-41380

Situación:
Tenemos un bloque de datos que lee de base de datos pero no de una tabla si no de una consulta (Query data source type = from clause query) y queremos poder redefinir este origen en función de otros parametros pero cuando lo hacemos mediante

set_block_property ('bloque de datos',QUERY_DATA_SOURCE_NAME , cadena_from);

solo nos funciona la primera vez y luego nos devuelve "FRM-41380: Cannot set the blocks query data source".

Explicación:
Otra de las tonterías de forms que nos obliga a hacer un paso previo.

Solución:
Ya lo hacemos correctamente pero antes de definir el nuevo origen hay que vaciar el bloque de datos para que tenga el estado "new".
Para hacerlo tenemos el ya mítico

go_block ('bloque_de_datos');
clear_block (no_validate);

martes, 8 de julio de 2008

Como saber el elemento actual cuando aprieto un botón

"Oracle forms" Como saber el elemento actual cuando aprieto un botón
"Oracle forms" Como puedo saber el elemento anterior

Situación:
Tenemos dos bloques de datos origen destino por ejemplo y nos interesa que al apretar un botón los datos del item actual del bloque origen pase al elemento correspondiente del bloque destino. ¿Como podemos saber que elemento es?

Explicación:
La respuesta lógica sería :system.current_item pero eso nos devuelve que el elemento actual es el botón que apretamos para pasar el campo. Entonces ¿como puedo saber cual es el anterior? Podríamos guardar en una variable el valor del último elemento mediante triggers pero eso además de laborioso es en la mayoría de casos absurdo.

Solución:
En las propiedades del boton tenemos que poner que no sea navegable ni con el ratón ni con el teclado. Así pues como no hemos ido al elemento, aunque podamos hacer click, “oracle forms” tendrá como :system.current_item el elemento anterior a presionar el botón. Así de simple :)

miércoles, 2 de julio de 2008

Mandar correo desde oracle forms 9

Oracle forms: Mandar correo con outlook o firebird
Oracle forms: Abrir correo para mandar con outlook o firebird
Oracle forms: Como puedo mandar un correo desde oracle forms
Oracle forms: No me funciona OLE2 para mandar correo

Situación:

Queremos abrir una ventana del Outlook o Firebird o el gestor de correo que tengamos instalado y usando el objeto OLE2 del Outlook me da un error que no es de oracle.

Explicación:

En google encontrareis un código para mandar correos desde forms basado en OLE2 y aunque eso funciona bien con Oracle forms 6i no lo hace con Oracle forms 9 porque se considera el OLE2 como obsoleto.
Oracle Forms 9 se basa en web así que la solución lógica es intentar mandarlo como si de HTML usando “mailto:direccion”

Solución:

Para mandarlo así solo hay que pasarlo como dirección web y el navegador ya se encarga de abrir un nuevo correo de tu gestor de correo.

Para solo tenemos que poner
web.show_document('mailto:direccion@dominio.com’,'_blank');



(la captura es del outlook si… aunque no lo recomiendo por su baja seguridad sobretodo frente a virus si el cliente quiere outlook pues outlook para el cliente… xD)

Que versión de Oracle Forms usas?