一、产生前因:
在ITPUB论坛中有人提出:如何在FORMS 中实现超链接,如何在FORMS中直接打开文本文档及图片等类似问题。
二、参考资料:
1、从FORM中导出数据到EXCEL例子(ExportTest.fmb);
2、有关FORM中超链接功能实现的例子(DDE.fmb);
三、功能描述:
过程 p_open_file(v_application VARCHAR2 , v_file_path VARCHAR2) 利用DDE内置程序包与程序库文件D2KWUTIL,实现了在ORACLE FORMS中直接打开文件 (如:EXCEL、WORD、图片)以及链接到指定网页的功能的。
四、过程代码:(具体FORM程序见下载中的文件:FORM中实现直接打开文件程序)
/*过程参数说明:
v_application ——打开文件的应用程序
v_file_path ——带详细路径的文件名
*/
PROCEDURE p_open_file(v_application VARCHAR2 , v_file_path VARCHAR2) IS
v_app_id PLS_INTEGER;
v_application_path VARCHAR2(200); --应用程序路径
v_end_char VARCHAR2(1);
BEGIN
--读注册表获取应用程序路径
v_application_path := Win_Api_Environment.Read_Registry('HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\'||v_application,'Path');
--为做到打开文件的统一性,对应用程序路径做相应处理
v_end_char :=SUBSTR(v_application_path , LENGTH(v_application_path));
IF v_end_char = ';' OR v_end_char = '\' THEN
v_application_path := SUBSTR(v_application_path , 1 ,LENGTH(v_application_path)-1);
END IF;
--打开文件
--注意:dde.app_begin()函数的第一个参数格式为:应用程序路径 + 空格 + 文件名(含路径)
-- 由此为使文件名中含空格或桌面上的文件也能被打开,我们需给文件名加上双引号
v_app_id :=dde.app_begin(v_application_path||'\'||v_application||' '||'"'||v_file_path||'"' ,dde.app_mode_maximized);
--将光标定位到打开的文件中
dde.app_focus(v_app_id);
EXCEPTION WHEN OTHERS THEN
MESSAGE('打开文件失败。');
END;