martes, 11 de noviembre de 2014

Abrir un archivo desde Oracle Forms (Open file from oracle forms)

Para abrir un archivo desde Oracle forms y sin la necesidad de tener configurado el Webutil Oracle Forms nos ofrece la interacción con el paquete Dynamic Data Exchange (DDE).

Sobre el paquete de DDE:
El paquete DDE ofrece intercambio dinámico de datos (DDE) de apoyo dentro de las Formas
y Componentes del desarrollador.

Intercambio dinámico de datos (DDE) es un mecanismo por el cual las aplicaciones pueden
comunicarse e intercambiar datos de Windows. Soporte de cliente DDE se añade como un
extensión de procedimiento a las formas del desarrollador. El paquete PL/SQL para soporte DDE
proporciona a los desarrolladores de aplicaciones una interfaz de programación de aplicaciones (API) para el acceso a la funcionalidad DDE desde dentro de los procedimientos y disparadores PL/SQL.
Las funciones DDE permiten que las aplicaciones de Oracle comunicarse con otra DDE.

Las Aplicaciones de Windows (servidores) funcionan de tres maneras:

  • Importación de datos.
  • Exportación de datos.
  • Ejecución de comandos en el servidor DDE.

Este ejemplo muestra que en caso de que una boleta sea rechazada inmediatamente se muestra la lista de devoluciones, la lista tiene un
registro de incidencias que cuentan con un campo check, el cual el usuario va a marcar para que sea analizada*

Para que la forma se ejecute orrectamente es necesario:
-Crear un bloque llamado: BL_BROWSE
-Un grupo de botones de radio llamado: GR_SINO
-Crear una biblioteca con una alerta -> La biblioteca puede tener cualquier nombre pero con una unidad de programa que se llame
PAS1_MOSTRAR_AVISO que cuente con 2 parámetros ('Nombre_alerta','Mensaje_alerta');
-Localizar correctamente donde están los ejecutables (.exe) de los programas, por ejemplo:C:\Program Files\Microsoft Office\Office15\EXCEL.EXE
-La ruta del archivo que se desea abrir desde forms no tenga espacios en blanco, por ejemplo:C:\Listadedevoluciones.xls
-Listo

Además cuenta con un campo para llenar con un email al que queramos enviar el archivo, a la hora de imprimir el botón de enviar correo automáticamente abre el correo.


Código WHEN-RADIO-CHANGED:
DECLARE
AppID PLS_INTEGER;
lv_error varchar2(500);
  /*Ing. Roberto Díaz 11-11-2014 CR*/
BEGIN
IF :BL_BROWSE.GR_SINO=1 THEN
PAS1_MOSTRAR_AVISO('ALERT_MENSAJE','La boleta ha sido aprobada');
ELSE                                                           
PAS1_MOSTRAR_AVISO('ALERT_MENSAJE','La boleta ha sido rechazada');
AppID:=DDE.App_Begin('C:\Program Files\Microsoft Office\Office15\EXCEL.EXE'||' '||'C:\Listadedevoluciones.xls',DDE.APP_MODE_MAXIMIZED);
AppID:=DDE.App_Begin('C:\Program Files (x86)\Adobe\Reader 11.0\Reader\AcroRd32.exe'||' '||'C:\webutil_conf.pdf',DDE.APP_MODE_MAXIMIZED);
END IF;
exception when others then 
lv_error:=(sqlerrm(sqlcode));
:bl_browse.it_mail:=lv_error;

END;

Código WHEN-BUTTON-PRESSED:
host('explorer.exe mailto:'||:bl_browse.it_mail);


La forma queda de la siguiente manera: