Form_通过FND_FNDFLUPL标准功能上传CSV控件(案例)

2014-06-08
BaoXinjian

一、总结


1. 上传资料

(1).通过调用function<FND_FNDFLUPL>,打开上传文件页面;

(2).从表fnd_lob_access和fnd_lobs中取出文件名放在form画面上;

2.
对dbms_lob中的二进制文件进行处理

(1).通过dbms_lob.converttoclob将二进制文件转换成字符文件;

(2).通过dbms_lob.instr和dbms_lob.substr在字符文件获取字符串记录;

3.
对获取资料放入到临时表,并显示在画面上

(1).通过instr和substr获字符串记录中的字段;

(2).并将字段赋值到集合或表中;

二、步骤


1.
上传资料


 1 DECLARE
2
3 access_id NUMBER;
4
5 l_server_url VARCHAR2(100);
6
7 l_parameters VARCHAR2(100);
8
9 button_choice INTEGER;
10
11 l_file_id VARCHAR2(100);
12
13 l_gfm_id INTEGER;
14
15 BEGIN
16
17 access_id := fnd_gfm.authorize(NULL);
18
19 fnd_profile.get(‘APPS_WEB_AGENT‘, l_server_url);
20
21 l_parameters := ‘access_id=‘ || access_id || ‘ l_server_url=‘ || l_server_url;
22
23 fnd_function.EXECUTE(function_name => ‘FND_FNDFLUPL‘,
24
25 open_flag => ‘Y‘,
26
27 session_flag => ‘Y‘,
28
29 other_params => l_parameters);
30
31 -- Display a modal message for user to indicate file upload
32
33 -- is completed.
34
35 fnd_message.set_name(‘FND‘, ‘ATCHMT-FILE-UPLOAD-COMPLETE‘);
36
37 button_choice := fnd_message.question(button1 => ‘YES‘,
38
39 button2 => NULL,
40
41 button3 => ‘NO‘,
42
43 default_btn => 1,
44
45 cancel_btn => 3,
46
47 icon => ‘question‘);
48
49 IF (button_choice = 3) THEN
50
51 NULL;
52
53 ELSIF (button_choice = 1) THEN
54
55 l_file_id := ‘‘;
56
57 l_gfm_id := fnd_gfm.get_file_id(access_id);
58
59 :main.gfm_id := fnd_gfm.get_file_id(access_id);
60
61 IF l_gfm_id IS NOT NULL THEN
62
63 SELECT DECODE(INSTR(file_name, ‘/‘),0,file_name,SUBSTR(file_name, INSTR(file_name, ‘/‘) + 1))
64
65 INTO l_file_id
66
67 FROM fnd_lobs
68
69 WHERE file_id = l_gfm_id;
70
71 IF l_file_id IS NOT NULL THEN
72
73 :main.filename := l_file_id;
74
75 SELECT cux_ce_stmt_s.NEXTVAL INTO :main.working_id FROM DUAL;
76
77 END IF;
78
79 END IF;
80
81 END IF;
82
83 END IF;

2.
对dbms_lob中的二进制文件进行处


 1 DECLARE
2
3 c_data CLOB;
4
5 l_data BLOB;
6
7 l_dest_offset INTEGER := 1;
8
9 l_scr_offset INTEGER := 1;
10
11 l_lang_context INTEGER := DBMS_LOB.default_lang_ctx;
12
13 l_warn INTEGER;
14
15 n_offset INTEGER;
16
17 n_clob_size INTEGER;
18
19 n_pos INTEGER;
20
21 v_buf VARCHAR2(4000);
22
23 BEGIN
24
25 DBMS_LOB.createtemporary(c_data, FALSE, DBMS_LOB.SESSION);
26
27 SELECT file_data INTO l_data FROM fnd_lobs WHERE file_id = 1501905;
28
29 DBMS_LOB.converttoclob(dest_lob => c_data,
30
31 src_blob => l_data,
32
33 amount => DBMS_LOB.lobmaxsize,
34
35 dest_offset => l_dest_offset,
36
37 src_offset => l_scr_offset,
38
39 blob_csid => NLS_CHARSET_ID(‘UTF8‘),
40
41 lang_context => l_lang_context,
42
43 warning => l_warn);
44
45 n_offset := 1;
46
47 LOOP
48
49 n_pos := DBMS_LOB.INSTR(lob_loc => c_data,
50
51 pattern => CHR(10),
52
53 offset => n_offset,
54
55 nth => 1);
56
57 IF NVL(n_pos, 0) = 0 THEN
58
59 n_pos := n_clob_size + 1;
60
61 END IF;
62
63 v_buf := DBMS_LOB.SUBSTR(lob_loc => c_data,
64
65 amount => n_pos - n_offset,
66
67 offset => n_offset);
68
69 n_offset := n_pos + 1;
70
71 EXIT WHEN n_pos > n_clob_size;
72
73 END LOOP;
74
75 IF dbms_lob.istemporary(l_data) > 0 THEN
76
77 dbms_lob.freetemporary(l_data);
78
79 END IF;
80
81 IF dbms_lob.istemporary(c_data) > 0 THEN
82
83 dbms_lob.freetemporary(c_data);
84
85 END IF;
86
87 END IF;

3.
对获取资料放入到临时表,并显示在画面上


 1 DECLARE
2
3 v_buf VARCHAR2(1000);
4
5 v_field VARCHAR2(1000);
6
7 n_delimiter_pos INTEGER;
8
9 BEGIN
10
11 v_buf := ‘Return Authorization Reference,Adjustment Type,Vendor Number,Site Code- Pay To,Site Code- Ship To,Part Number,Quantity,Subinventory‘;
12
13 LOOP
14
15 v_field := NULL;
16
17 n_delimiter_pos := INSTR(v_buf, ‘,‘);
18
19 IF n_delimiter_pos > 0 THEN
20
21 v_field := LTRIM(RTRIM(SUBSTR(v_buf, 1, n_delimiter_pos - 1)));
22
23 v_buf := SUBSTR(v_buf, n_delimiter_pos + 1);
24
25 ELSIF LTRIM(RTRIM(v_buf)) IS NOT NULL THEN
26
27 v_field := LTRIM(RTRIM(v_buf));
28
29 v_buf := NULL;
30
31 END IF;
32
33 IF (v_buf IS NULL) THEN
34
35 EXIT;
36
37 END IF;
38
39 END LOOP;
40
41 END;

Thanks and Regards

时间: 2024-10-13 07:20:36

Form_通过FND_FNDFLUPL标准功能上传CSV控件(案例)的相关文章

兼容IE浏览器样式的html上传文件控件

最近在公司做项目时需要用到html的上传文件控件,但发现原生的上传文件控件<input type="file" />在IE.Chrome浏览器的显示效果相差很大,为了统一样式,我参考了网上的许多方法,下面给出我自己的代码实现(实际上就是在原生的input file上面加个外壳,再添加一些样式,让它看上去不像原生的这么丑) html部分 <div class="upload-box"> <div class="input&quo

jquery上传文件控件Uploadify

基于jquery的文件上传控件,支持ajax无刷新上传,多个文件同时上传,上传进行进度显示,删除已上传文件. 要求使用jquery1.4或以上版本,flash player 9.0.24以上. 有两个版本,一个用flash,一个是html5.html5的需要付费~所以这里只说flash版本的用法. 官网:http://www.uploadify.com/ 控件截图: 用法: 首先引用下面的文件 <link rel="stylesheet" type="text/css&

上传文件控件

我们在编写页面的时候会遇到这样的情况,需要上传文件.我们一般会使用<input type="file" />来处理. 但是他会有一个小问题.下面我们一起来看一看. 不同浏览器下式样差别较大. IE8:在按钮前面有一个文本框用来显示文件路径. chrome:在按钮后面显示文件上传状态.默认文言略有不同. Firefox:与chrome相似. 不同浏览器下的式样不同,导致我们不能基于一个稳定的式样做设置,当我们设置width和height也会遮盖不同的部分. 解决方案1:将&l

Web大文件(夹)上传(断点续传)控件-Xproer.HttpUploader6

版权所有 2009-2017荆门泽优软件有限公司 保留所有权利 官方网站:http://www.ncmem.com/ 产品首页:http://www.ncmem.com/webapp/up6.2/index.asp 在线演示:http://www.ncmem.com/products/up6.3/index.htm 产品介绍:http://www.cnblogs.com/xproer/archive/2012/10/26/2741264.html 升级日志:http://www.cnblogs.

html+css上传文件控件美化

html上传美化: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>上传文件</title> <style> label { position: relative; display: inline-block; background: #D0EEFF; border: 1px solid #9

MP3文件上传UPLOAD控件点击上传部分代码

if (TxtName.Text != null && TxtPublish.Text != null) { SqlConnection myConn = GetCon(); myConn.Open(); ////上传音乐文件的变量 string FilePathMusic = string.Empty;//上传音乐文件的路径 string FileNameMusic = string.Empty;//上传音乐文件名 string FileExtendMusic = string.Empt

上传附件控件的浏览器兼容问题检查

关于浏览器兼容性的问题. 关于这方面要考虑的的几个方面: 1.  附件大小,格式 2.  Js是否禁用 3.  什么浏览器,哪个版本 4.项目引用的上传控件支持什么版本,比如flash版本,或支持html5页面 PS:背景: 跟踪客户一个问题,在本地验证没有发现问题后,怀疑是兼容性问题,在平时如果客户有问题,都是有运维人员联系并反馈到测试.但情况特殊,直接把客户的手机号码给我了. 上面4点是我觉得向客户咨询时需要获取的信息.

Webform之FileUpload(上传按钮控件)简单介绍及下载、上传文件时图片预览

1.FileUpload上传控件:(原文:http://www.cnblogs.com/hide0511/archive/2006/09/24/513201.html) FileUpload 控件显示一个文本框控件和一个浏览按钮,使用户可以选择客户端上的文件并将它上载到 Web 服务器.用户通过在控件的文本框中输入本地计算机上文件的完整路径(例如,C:\MyFiles\TestFile.txt)来指定要上载的文件.用户也可以通过单击“浏览”按钮,然后在“选择文件”对话框中定位文件来选择文件.  

&lt;input type=file&gt;上传唯一控件

值得注意的是:当一个表单里面包含这个上传元素的时候,表单的enctype必须指定为multipart/form-data,method必须指定为post,浏览器才会认识并正确执行.但是还有一点,浏览器只允许用户点击<input type="file">来选择本地文件,用JavaScript对<input type="file">的value赋值是没有任何效果的.当用户选择了上传某个文件后,JavaScript也无法获得该文件的真实路径:但是有