Está en la página 1de 5

Gua para incluir las modificaciones necesarias a las formas para el uso de WEBUTIL.

1. Atachar la librera WEBUTIL.pll, abrir el objeto WEBUTIL.olb y arrastrar el object group WEBUTIL que se encuentran en la carpeta WEBUTIL del proyecto, por ejemplo: \\asi32\ab9iwin\stanpweb\webutil
2. Si la forma se utiliza para cliente servidor y para web realice lo siguiente: Crear un campo denominado WEB (data type = char , Maximun Length = 1) en un bloque de control de la forma donde se est incluyendo el cambio.

Copiar la siguiente programacin en el trigger WHEN-NEW-FORM-INSTANCE: if get_application_property(USER_INTERFACE) = 'WEB' then :B_BASE.WEB := 'S'; else :B_BASE.WEB := 'N'; end if;

Nota: Se debe tener en cuenta de que al hacer clear_form stas variables perdern la informacin que almacenan. 3. Si se debe desplegar una ventana para abrir o salvar un archivo utilice el siguiente ejemplo de programacin, en donde: Ejemplo para Guardar Archivo Declare Lv_NombreArchivo varchar2(100); --(Nombre del archivo a generar, el tamao de la variable puede variar dependiendo del nombre del archivo) Lv_Tipo_dato varchar2(100); --(Tipo de archivo, aparecer en la ventana indicando los tipos de archivos permitidos, el tamao de la variable puede variar dependiendo de los diferentes tipos de archivos que se agreguen para desplegar) Ln_tipo_ventana number; --(Para indicar si se va abrir o guardar) Lv_ruta varchar2(200); --(Almacenar la ruta indicada por el usuario, el tamao de la variable puede variar dependiendo de la ruta y el nombre del archivo que indique el usuario) BEGIN IF :B_BASE.WEB = 'S' THEN Lv_tipo_dato := 'Archivos de texto (*.TXT)|*.TXT|'||'Todos los archivos (*.*)|*.*|'; Ln_tipo_ventana := SAVE_FILE; Lv_ruta := client_get_file_name(directory_name => 'C:\' ,file_name => Lv_NombreArchivo ,file_filter => Lv_tipo_dato ,message => null

,dialog_type => Ln_tipo_ventana ,select_file => null); ELSE begin Lv_ruta := Win_Api_Dialog.Save_File(Lv_NombreArchivo,'Seleccione el archivo destino','C:\', 'Archivos de texto (*.TXT)|*.TXT|'||'Todos los archivos (*.*)|*.*|'); Exception When others then MensajeError RAISE Form_Trigger_Failure; end; END IF; Luego se procede a asignar al campo en pantalla la variable Lv_ruta END; Ejemplo para Abrir Archivo IF :BL_BASE.WEB = 'S' THEN Lv_NombreArchivo := null; Lv_tipo_dato := 'DAT FILES (*.DAT)|*.DAT|'||'ALL FILES (*.*)|*.*|'||'Todos los archivos (*.*)| *.*|'; Ln_tipo_ventana := OPEN_FILE; Lv_NombreArchivo := client_get_file_name(directory_name => 'C:\' ,file_name => null ,file_filter => Lv_tipo_dato ,message => null ,dialog_type => Ln_tipo_ventana ,select_file => null); ELSE BEGIN Lv_NombreArchivo := null; Lv_NombreArchivo := WIN_API_DIALOG.OPEN_FILEEX('Seleccione el Archivo',NULL,'DAT FILES (*.DAT)|*.DAT|'||'ALL FILES (*.*)|*.*|',TRUE); EXCEPTION WHEN OTHERS THEN MensajeError RAISE Form_Trigger_Failure; END; END IF; Luego se procede a asignar al campo en pantalla la variable Lv_NombreArchivo.

4. Para escribir en un archivo de texto realice lo siguiente: Declare las siguientes variables en el procedimiento que crea el archivo. out_file TEXT_IO.FILE_TYPE; out_file_w CLIENT_TEXT_IO.FILE_TYPE; IF :B_BASE.WEB = 'S' THEN out_file_w := Client_TEXT_IO.FOPEN(Lv_ruta,'w'); --Para abrir if client_text_io.is_open(out_file_w) then Obtenga la informacin a ingresar en el archivo CLIENT_TEXT_IO.PUT_LINE(out_file_w,Lv_registro); --Para escribir CLIENT_TEXT_IO.FCLOSE(out_file_w); --Para cerrar end if;
2

client_host('cmd /C notepad '||Lv_ruta); --Si se desea mostrar en pantalla el archivo generado ELSE out_file := TEXT_IO.FOPEN(Lv_ruta,'w'); --Para abrir if text_io.is_open(out_file) then Obtenga la informacin a ingresar en el archivo TEXT_IO.PUT_LINE(out_file,Lv_registro); --Para escribir TEXT_IO.FCLOSE(out_file); --Para cerrar end if; host('start notepad '||Lv_ruta); --Si se desea mostrar en pantalla el archivo generado END IF;

CONSIDERACIONES PARA CUANDO SE TRABAJA CON DOCUMENTOS EN EXCEL:


1. Se deben seguir los pasos 1 y 2 mencionados sobre WEBUTIL.

2. Atachar la librera LIB_EXCEL1.pll que se encuentra en la carpeta del proyecto, por ejemplo \\asi32\ab9iwin\stanpweb\pll\1, \\asi-10\Prue_A8r1\obo\LIB.
3. Colocar el archivo excell (Machote) en el servidor, en la ruta destinada para los machotes. 4. Crear dos campos denominados GUI (data type = char , Maximun Length = 30), SOUNIX (data type = number , Maximun Length = 1) en un bloque de control de la forma donde se est incluyendo el cambio. 5. Adicionar el siguiente program unit a la forma. Este procedimiento transfiere el archivo excell o machote, a la mquina del usuario; utilizando variables configuradas en el Aplication server. PROCEDURE DOWNLOAD_AS(Pv_NombreMachote IN VARCHAR2, --Se enva el nombre del Template Pv_plantilla OUT VARCHAR2, --Retorna la ubicacin de la plantilla Gv_CodError OUT VARCHAR2) IS l_success boolean; l_bare_filename varchar2(50); Lv_plantilla varchar2(2000); --Interfase Excel Lv_plantillaOrig varchar2(2000); --Interfase Excel Lv_mensaje varchar2(200); BEGIN -- Obtener la Ruta del Aplication server MG_K_PARAMETROS_DINAMICOS.MG_P_DEVUELVE_VALOR('BMG','APPLICATION_SERVER' ,Lv_plantillaOrig,Lv_mensaje); If Lv_mensaje is not null then Gv_CodError := Lv_mensaje; Return; End If; -- if Lv_Mensaje is not null -- Obtener la Ruta de donde se colocara el machote en la maquina del cliente MG_K_PARAMETROS_DINAMICOS.MG_P_DEVUELVE_VALOR('BMG','RUTA_TRANSFIERE_MA CHOTE',Lv_plantilla,Lv_mensaje);
3

Pv_Plantilla := Lv_plantilla; If Lv_mensaje is not null then Gv_CodError := Lv_mensaje; Return; End If; -- if Lv_Mensaje is not null l_success := webutil_file_transfer.AS_to_Client_with_progress (clientFile => lv_plantilla||Pv_NombreMachote ,serverFile => Lv_plantillaOrig||Pv_NombreMachote ,progressTitle => 'Descarga del Application Server en progreso' ,progressSubTitle => 'Por Favor Espere...'); if l_success then Li_boton := pu_f_mostrar_alerta('Archivo Descargado Satisfactoriamente del Application Server', 'NOTA', 1); else Li_boton := pu_f_mostrar_alerta('Fallo en Descarga de Archivo del Application Server', 'PARAR'); raise form_trigger_failure; end if; EXCEPTION when others then Gv_CodError := MG_K_CTRL_ERROR.MG_F_ARMAR_CODIGO_ERROR(0000, 'Fallo en Descarga '|| sqlerrm, null); return; END;

7. Si se est modificando una forma tener en cuenta lo siguiente: Todas las instrucciones que originalmente utilizaban LIB_Excel.CREATE_EXCEL_OBJECT; --Para crear el objeto tipo excel LIB_Excel.CREATE_FILE --Para crear el archivo LIB_Excel.SET_VALUE, --Para asignar el valor a una columna de excel etc; para el uso de los machotes de excell en cliente servidor, deben ser reemplasadas por : LIB_Excel1.CREATE_EXCEL_OBJECT; LIB_Excel1.CREATE_FILE LIB_Excel1.SET_VALUE

8. En el botn que busca la ruta del archivo a generar colocar la siguiente programacin, tomando en
cuenta que se debe incluir la programacin que contenga este botn para el funcionamiento normal en cliente servidor. DECLARE Lv_NombreDefault varchar2(100); Lv_Extencion varchar2(3) := 'XLS'; lv_ruta varchar2(220):=null; lv_archivo varchar2(25); lv_nombre_archivo varchar2(25); l_filename varchar2(200);

begin lv_nombre_archivo:=AQU VA EN NOMBRE DEL ARCHIVO A GENERAR||'.'||Lv_Extencion; if get_application_property(USER_INTERFACE) = 'WEB' then :B_BASE.gui := 'WEB'; else :B_BASE.gui := 'CLTSRV'; end if; if upper(Get_Application_Property(OPERATING_SYSTEM )) in ('UNIX','MOTIF','SUNOS','HP-UX') then :B_BASE.SOUNIX := 1; select ruta_clte_unix into lv_ruta from mg_webutil; elsif Get_Application_Property(OPERATING_SYSTEM ('MSWINDOWS32','MSWINDOWS','WIN32COMMON') then :B_BASE.SOUNIX := 0; select ruta_clte_windows into lv_ruta from mg_webutil; ) in

end if; IF :B_BASE.WEB = 'N' THEN AQUI VA LA PROGRAMACION QUE TIENE LA FORMA PARA EL FUNCIONAMIENTO EN CLIENTE SERVIDOR. ELSE l_filename := client_get_file_name(directory_name => lv_ruta ,file_name => lv_nombre_archivo ,file_filter => null ,message => null ,dialog_type => null ,select_file => null ); :B_GENERAL.w_nombre_archivo := l_filename ; END IF; -end;

También podría gustarte