壹佰网|ERP100 - 企业信息化知识门户

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 2620|回复: 19

[OAF] OAF 标准附件问题

  [复制链接]
发表于 2010/8/17 13:21:02 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。如果您注册时有任何问题请联系客服QQ: 83569622  。

您需要 登录 才可以下载或查看,没有帐号?注册

x
1234.JPG
高手帮忙做过类似图中标准附件吗?
123.JPG
上图是我做的附件页面,点了ADD 之后弹出下图,可是当我UPLOAD 了附件之后点APPLY ,页面中仍然显示NON, 附件名称不会显示出来. 高手帮个忙. 谢谢
12.JPG
 楼主| 发表于 2010/8/17 14:57:15 | 显示全部楼层
高手帮个忙
发表于 2010/8/17 15:36:55 | 显示全部楼层
本帖最后由 sumury 于 2010/8/17 15:49 编辑

检查一下,数据库中是否已经,存有你刚刚新追加的这条记录。

另外,再检查一下OAF guide中Attachments这一课的Step 10中categoryMap是不是都设置了。
 楼主| 发表于 2010/8/17 16:09:43 | 显示全部楼层
我查了数据库是有记录的,categoryMap 设置过,之后删除了,
我用的是attachmentlink
我觉得我仍旧没弄清楚为什么要设置categoryMap  和设置ENTITY 的概念 之前都是随便设置的,
顺便请帮忙解释一下,
万分感谢
发表于 2010/8/17 16:23:08 | 显示全部楼层
本帖最后由 sumury 于 2010/8/17 16:31 编辑

在attachment中,只有设置过categoryMap以后,
存储在数据库中的相关类型的数据才会被表示出来。
所以这个一定是要设置的。

When you add an attachment, you need to specify a category for the attachment. A category is a label that users apply to individual attachments and documents. When you set up a region to be attachment-enabled, you must assign a category for the documents that can be attached. The Attachments page can query only those documents that are assigned to the category to which the calling page's entity is associated. A "Miscellaneous" category is seeded to provide easy visibility of a document across pages. If you do not assign a category to the documents that can be attached, the category defaults to Miscellaneous.
 楼主| 发表于 2010/8/17 16:48:46 | 显示全部楼层
谢谢,
那ENTITY  怎么设置? 好像读的是 FND_DOCUMENT_CATEGORIES 表中的NAME 字段, 哪个地方可以提供设置该表.
还有我当前PAGE是个输入页面, 资料还没存到数据库, ATTACHMENT 是不是一定要加载到现有的RECORD.
发表于 2010/8/18 08:59:48 | 显示全部楼层
本帖最后由 sumury 于 2010/8/18 09:04 编辑

设置值的话,在EBS中Application Developer > Attachments

资料还没有到数据库中,是因为你还没有commit;
attachment的文档中有说。
Note that the new attachments are not committed until a submit is performed by the associated parent region. Clicking Apply on the Add Attachment page does not commit the changes by default. If you want a commit to occur when clicking Apply, refer to the Runtime Control section called "Committing Changes" for additional information.
 楼主| 发表于 2010/8/18 11:05:05 | 显示全部楼层
本帖最后由 tchen 于 2010/8/18 11:08 编辑

再次谢谢您的指点,
等会研究下怎么设置ENTITY   和category.
另外一个问题
当我打开页面, 在一些ITEM 中输入值, 然后点ADD 增加ATTACHMENT, 当我点了APPLY 后之前, 之前被输入的ITEM全部值被清空了, 页面又被重新刷新了下.  事实上不应该被清空的.
你知道什么问题吗?

发表于 2010/8/18 12:13:16 | 显示全部楼层
留个邮箱,给你附件
 楼主| 发表于 2010/8/18 12:26:24 | 显示全部楼层
发表于 2010/8/18 12:45:19 | 显示全部楼层
本帖最后由 sumury 于 2010/8/18 13:42 编辑

邮件已经发送。

查询SQL
SELECT FL.FILE_NAME,
       FL.FILE_CONTENT_TYPE,
       DBMS_LOB.GETLENGTH(FILE_DATA) FILE_SIZE,
        FAD.ENTITY_NAME,
        FAD.PK1_VALUE,
        FAD.CATEGORY_ID,
        FDCV.name
  FROM FND_ATTACHED_DOCUMENTS FAD, FND_DOCUMENTS_TL FD, FND_LOBS FL, FND_DOCUMENT_CATEGORIES_VL FDCV
WHERE FAD.ENTITY_NAME = 'YOUR ENTITY NAME'
   AND FAD.PK1_VALUE = 'YOUR ENTITY PRIMARY KEY'
   AND FD.DOCUMENT_ID = FAD.DOCUMENT_ID
   AND FL.FILE_ID = FD.MEDIA_ID
   AND FAD.CATEGORY_ID = FDCV.category_id

 楼主| 发表于 2010/8/18 14:21:08 | 显示全部楼层
邮件已经收到, 谢谢 真在本机运行, 超慢,还没出结果.
貌似有点不一样, 你的那个是先从表查询出RESULT, 然后在RESULT的对应的行添加附件, 对吗?
而我的那个是输入界面, 在输入界面上还有一ADD 附件ITEM,   当所有的ITEM 输入完毕, 包括增加附件, 然后一起SAVE到数据库,
发表于 2010/8/18 16:39:07 | 显示全部楼层
我给你的界面上,也有两个输入框的(开始日,终了日)

再不行,我也没辙了。
 楼主| 发表于 2010/8/19 11:34:18 | 显示全部楼层
本帖最后由 tchen 于 2010/8/19 12:10 编辑

谢谢了 在我的PROCESSREQUEST 中有这样的代码
   OAViewObject vo = (OAViewObject)getCreateSummaryVO1();  
   if (vo.getFetchedRowCount() == 0)   
   {
   //  vo.setMaxFetchSize(0);  
       vo.executeQuery();
   }
    Row row = vo.createRow();   
    vo.insertRow(row);
   row.setNewRowState(Row.STATUS_INITIALIZED);

当增加完附件后点APPLY 后回退到之前页面时应该会执行这段代码,所以老是初始化页面

刚刚在EmpDetailsPG 中增加ATTACHEMENT 也是同样的问题,
难道真的不能在新增页面中增加附件..

发表于 2010/8/19 12:54:43 | 显示全部楼层
在你的CO的processFormRequest()中加入以下代码:
    String strEvent = pageContext.getParameter(EVENT_PARAM);
    if (OA_ADD_ATTACHMENT.equals(strEvent) || OA_GOTO_ATTACHMENTS.equals(strEvent))
    {
      pageContext.putTransactionTransientValue("ATTACHMENT", "Y");
    }

然后在你调用新插入行的这一段代码的外层,再封装一个 if语句 就可以:
    if (!"Y".equals(getOADBTransaction().getTransientValue("ATTACHMENT")))
    {
      //以下是你原来的代码
   OAViewObject vo = (OAViewObject)getCreateSummaryVO1();  
   if (vo.getFetchedRowCount() == 0)   
   {
   //  vo.setMaxFetchSize(0);  
       vo.executeQuery();
   }
    Row row = vo.createRow();   
    vo.insertRow(row);
   row.setNewRowState(Row.STATUS_INITIALIZED);
    }
 楼主| 发表于 2010/8/19 13:39:43 | 显示全部楼层
感谢热心帮忙,   可以了
发表于 2010/8/19 13:45:28 | 显示全部楼层
忘了,还需要加个else
if (!"Y".equals(getOADBTransaction().getTransientValue("ATTACHMENT")))
{
......
}
else
{
  getOADBTransaction().removeTransientValue("ATTACHMENT");
}

或者,你觉得不需要在这里移除也行,
总之,是要找个时机移除的,否则会有bug
 楼主| 发表于 2010/8/19 13:59:29 | 显示全部楼层
本帖最后由 tchen 于 2010/8/19 14:02 编辑

补上了.....
发表于 2011/7/12 15:47:54 | 显示全部楼层
正在研究这个东东,有难度ing~  大虾请指点。
发表于 2013/6/26 20:51:48 | 显示全部楼层

谢谢Sumury的这个方法可以判断是否是上传附件,是否会再次调用页面processRequest初始化方法,
我们在项目中也遇到类似刷新的问题
我们用String value = (String)bean.getValue(pageContext);
通过value有值,则是刷新 value没有值,则初始化
附:若上文件中的item,绑定了vo是不会有值清空的情况

String strEvent = pageContext.getParameter(EVENT_PARAM);
    if (OA_ADD_ATTACHMENT.equals(strEvnt) || OA_GOTO_ATTACHMENTS.equals(strEvent))
    {
      pageContext.putTransactionTransientValue("ATTACHMENT", "Y");
    }

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|Archiver|小黑屋|手机版|壹佰网 ERP100 ( 京ICP备19053597号-2 )

Copyright © 2005-2012 北京海之大网络技术有限责任公司 服务器托管由互联互通
手机:13911575376
网站技术点击发送消息给对方83569622   广告&合作 点击发送消息给对方27675401   点击发送消息给对方634043306   咨询及人才点击发送消息给对方138011526

GMT+8, 2025/11/29 15:04 , Processed in 0.022599 second(s), 15 queries , File On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表