oracle form上传excel或图片及XML Publisher实现动态打印图片

2019-08-01 22:34

摘要

开发工具:oracle 10g form ,developer

系统版本:oracle EBS R12I

作者:胡瑞昌 时间:2011-08-02

邮箱:hrc122@163.com

第一章oracle form上传EXCEL

1.实现目标

点击form上的按钮,直接上传EXCEL到form栏位. 2.实现方式和代码

Form 中关键代码

Buttom :CONTROL.SELECT_IMPORT_DATA('WHEN-BUTTON-PRESSED');

说明:代码(lv_fields:=)后面参数为form界面显示的栏位.并和CVS文件栏位顺序对应. 注意本地系统字符集和服务器系统字符集转换.

skip_rows constant number := 1; 的作用是删除excel第一行题头

PACKAGE BODY CONTROL IS

PROCEDURE SELECT_IMPORT_DATA(p_event IN VARCHAR2) IS

lv_fields varchar2(4000); BEGIN

IF p_event = 'WHEN-BUTTON-PRESSED' THEN

lv_fields:= 'QUOTATION_TYPE,ITEM_NUMBER,SALEMAN,SALE_GROUP,SALE_PHONE,SALE_MAIL,SALE_FAX'; knd_import_pkg.import_file(v_block => 'PO_QUOTATION_TEMP'

,v_field => lv_fields ,v_col_separate => ','

,v_row_separate =>'');

END IF;

END SELECT_IMPORT_DATA; End;

PACKAGE knd_import_pkg IS

--字符集转换

to_charset constant varchar2(120) := 'AMERICAN_THE NETHERLANDS.UTF8'; from_charset constant varchar2(120) := 'SIMPLIFIED CHINESE_CHINA.ZHS16GBK'; skip_rows constant number := 1;

--打开文件导入界面

Function open_file return number;

--导入文件并将文件展示在forms界面

procedure import_file(v_block varchar2, v_field varchar2, v_col_separate varchar2, v_row_separate varchar2); END;

PACKAGE BODY knd_import_pkg IS

Function open_file return number is

access_id NUMBER;

l_server_url VARCHAR2(20000); l_url VARCHAR2(20000); l_gfm_id NUMBER; button_choice NUMBER; begin

Get Process ID

access_id := fnd_gfm.authorize(null);

Get Web Server Address

fnd_profile.get('APPS_WEB_AGENT',l_server_url);

Call Web Page

l_url := RTRIM(l_server_url, '/') ||

'/fnd_file_upload.displayGFMform?access_id=' || to_char(access_id) || chr(38) || 'l_server_url=' || l_server_url;

IF (l_url IS NULL) THEN raise form_trigger_failure; END IF;

Open Web Page

fnd_utilities.open_url(l_url);

this action is waiting for user select file, and check upgrade

--fnd_message.set_name('FND','ATCHMT-FILE-UPLOAD-COMPLETE');

fnd_message.set_string('请在打开的WEB页面上选择上传的文件,成功上传后点击“是”确认!'); button_choice := FND_MESSAGE.question(

button1 => 'YES', button2 => null, button3 => 'NO', default_btn => 1, cancel_btn => 3, icon => 'question');

Get File ID

l_gfm_id := fnd_gfm.get_file_id(access_id);

if l_gfm_id is not null and l_gfm_id > 0 then if button_choice = 1 then

return l_gfm_id; -- File is selected and upgrade else

return 0; -- File is selected but not upgrade end if; else

return -1; -- File is not selected end if;

end open_file;

----------------------------------------------------------------------------------------------------------------------------------

procedure import_file(v_block varchar2, v_field varchar2, v_col_separate varchar2, v_row_separate varchar2) is l_gfm_id NUMBER;

v_file varchar2(20000);

v_row_sep varchar2(1); v_col_sep varchar2(1);

v_comma_exist boolean := false;

my_field dbms_utility.uncl_array; my_field_cnt binary_integer; my_field_loc binary_integer := 1;

i NUMBER; file_len NUMBER;

file_loc NUMBER; -- file location temp_data varchar2(20000); temp_tab varchar2(20000);

enter_loc NUMBER; -- enter_key location on temp buffer tab_loc NUMBER; -- tab_key location on temp buffer tab_loc_old NUMBER; -- tab_key location on temp buffer ln_line_number NUMBER; begin

Sperate v_field to my_field( ex: 'x,y,z' -> 'x', 'y', 'z')

dbms_utility.comma_to_table( v_field, my_field_cnt, my_field );

for i in 1 .. my_field_cnt loop

Check item is exist ? declare

item_id item; begin

沒有略過資料

if my_field(i) <> 'xxx' then

item_id := Find_Item( v_block||'.'||ltrim(rtrim(my_field(i))) );

if id_null(item_id) then

fnd_message.debug( 'Item : ' || v_block||'.'||my_field(i) || ' is not exist !!' ); raise form_trigger_failure; end if; end if; end; end loop;

if upper(v_col_separate) = '' then

v_col_sep := chr(09);

elsif upper(v_col_separate) <> 'NULL' then

v_col_sep := v_col_separate; else

v_col_sep := chr(0); end if;

Get Row Separate char

if upper(v_row_separate) = '' then

v_row_sep := chr(13);

elsif upper(v_row_separate) <> 'NULL' then

v_row_sep := v_row_separate; else

v_row_sep := chr(0); end if;

------------------------

Open File --打开文件

l_gfm_id := open_file;

if l_gfm_id > 0 then

copy( '20', 'system.message_level' );

Get File Length

select dbms_lob.getlength(file_data) into file_len from fnd_lobs

where file_id = l_gfm_id;

go_block ( v_block );

Select Data


oracle form上传excel或图片及XML Publisher实现动态打印图片.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:官地中心小学办学章程

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: