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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 2066|回复: 19

[OAF] 判断按钮是否可用

  [复制链接]
发表于 2010/9/8 14:55:10 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 雨霖 于 2010/9/8 16:10 编辑

据lookup_code判断创建按钮是否可用
比如上述查询中,有TTJ,YMD有数据,则创建铜铁件按钮和创建银焊点核算表按钮不可用,其他按钮可用
发表于 2010/9/8 15:07:53 | 显示全部楼层
     木有图片
 楼主| 发表于 2010/9/8 16:11:09 | 显示全部楼层
图片已经重新发
发表于 2010/9/9 09:39:36 | 显示全部楼层
设置button的disabled属性为${oa.<VO的名字>.<属性名>}
 楼主| 发表于 2010/9/9 10:32:21 | 显示全部楼层
//查询核算表类型,判断创建按钮是否可用
   private void setLookCode(OADBTransaction txn, String userId,OAWebBean webBean)
    {
        PreparedStatement pstmt = null;
        ResultSet rs = null;
        String lookcode= null;     
       String sql="select lookup_code\n,decode(lookup_code, null, 0, 1) invalid\n" +
                   "from tg_purchase_acc_ymd_head\n group by lookup_code\n ,creater\n" +
                   "having creater='" + userId + "'" +
                   "union all\n" +
                   "select lookup_code\n,decode(lookup_code, null, 0, 1) invalid\n" +
                   "from tg_purchase_acc_ttj_head\n group by lookup_code\n,creater\n" +
                   "having creater='" + userId + "'"+
                   "union all\n" +
                   "select lookup_code\n,decode(lookup_code, null, 0, 1) invalid\n" +
                   "from tg_purchase_acc_yhd_head\n group by lookup_code\n, creater\n" +
                   "having creater ='" + userId + "'" +
                    "union all\n" +
                    "select lookup_code\n ,decode(lookup_code, null, 0, 1) invalid\n" +
                   "from tg_purchase_acc_sj_head\n group by lookup_code\n,creater\n" +
                   "having creater='" + userId + "'" +
                   "union all\n" +
                   "select lookup_code\n,decode(lookup_code, null, 0, 1) invalid\n" +
                   "from tg_purchase_acc_bzw_head\n group by lookup_code\n,creater\n" +
                   "having creater='" + userId + "'";  
        try
        {         
            pstmt = txn.createPreparedStatement(sql, 1);
            rs = pstmt.executeQuery();
            OAButtonBean beanCreateTTJ = (OAButtonBean)webBean.findChildRecursive("createTTJ");
          //  System.out.println(webBean.findChildRecursive("createTTJ"));
            OAButtonBean beanCreateYMD = (OAButtonBean)webBean.findChildRecursive("createYMD");
            OAButtonBean beanCreateYHD = (OAButtonBean)webBean.findChildRecursive("createYHD");
            OAButtonBean beanCreateSJ = (OAButtonBean)webBean.findChildRecursive("createSJ");
            while(rs.next())
            {
              lookcode =rs.getString(1);
               if(lookcode.equals("TTJ"))    //字符串。别用== ,用equals           
                   beanCreateTTJ.setDisabled(true);
               if(lookcode.equals("YMD"))
                        beanCreateYMD.setDisabled(true);                     
               if(lookcode.equals("YHD"))
                  beanCreateYHD.setDisabled(true);
               if(lookcode.equals("SJ"))
                   beanCreateSJ.setDisabled(true);
            }
        }
        catch(SQLException se)
        {
            throw new OAException(se.getMessage());
        }
        catch(Exception e)
        {
            throw new OAException(e.getMessage());
        }
        finally
        {
            try
            {
                pstmt.close();
                rs.close();
            }
            catch(SQLException se2)
            {
                throw new OAException(se2.getMessage());
            }
        }
    }
发表于 2010/9/9 11:25:55 | 显示全部楼层
需要这么繁琐么?
 楼主| 发表于 2010/9/9 13:27:03 | 显示全部楼层
因为需要传递参数,可能比较麻烦的。VO是查询多个表的结果,如果使用${oa.<VO的名字>.<属性名>}的话,就不能进行判断了。应该还有其他的方法,可惜我还不知道怎么用
发表于 2010/9/9 13:56:31 | 显示全部楼层
本帖最后由 sumury 于 2010/9/9 14:01 编辑

你的SQL中有一个union all,所以,

1、把你的SQL分开来写成两个VO,

2、把VO中invalid这个字段设置成boolean类型的。

3、使用${oa.<VO的名字>.<属性名>}绑定控件。

4、初始化的时候查询一次,即
      getVO1().executeQuery();
      getVO2().executeQuery();

两句代码,搞定!

另外,你说,你的SQL中需要传值,我粗看了一眼,就看到一个userId,

那么你可以直接在SQL中写FND_GLOBAL.USER_ID,根本不用传参。
 楼主| 发表于 2010/9/9 14:33:55 | 显示全部楼层
可是只要有一条数据就使得所有的按钮为false,而不能进行对ookup_code进行判断
 楼主| 发表于 2010/9/9 14:34:26 | 显示全部楼层
不止一个union all,是多个
发表于 2010/9/9 14:48:14 | 显示全部楼层
我发现,你的union all 链接五段SQL,相应页面上table有五个button。

业务,是不是TTJ,YMD的数据只能分别从tg_purchase_acc_ttj_head和tg_purchase_acc_ymd_head这两种表中抽出?
 楼主| 发表于 2010/9/9 15:10:32 | 显示全部楼层
是的,只是抽取了它们的lookup_code
发表于 2010/9/9 15:54:57 | 显示全部楼层
那个不就好了

建两个VO,SQL分别是
select lookup_code\n,decode(lookup_code, null, 0, 1) invalid
                   from tg_purchase_acc_ymd_head group by lookup_code ,creater
                   having creater=FND_GLOBAL.USER_ID

                   select lookup_code,decode(lookup_code, null, 0, 1) invalid
                   from tg_purchase_acc_ttj_head group by lookup_code,creater
                   having creater=FND_GLOBAL.USER_ID

不就可以了
 楼主| 发表于 2010/9/9 16:02:12 | 显示全部楼层
不是两个,是五个吧
发表于 2010/9/9 16:06:46 | 显示全部楼层
你只关心两个button,而这两个button的控制又是来自于两段独立的SQL

为什么要将5个VO呢?
 楼主| 发表于 2010/9/9 16:25:45 | 显示全部楼层
是五个button啊!!!
是不是我还没明白你的意思啊,我总觉得不对
发表于 2010/9/9 16:33:32 | 显示全部楼层
奥,我知道了,

你5个button都是需要动态控制的,对哇?

那么就建立五个VO,每个VO中都是一段独立的SQL。
 楼主| 发表于 2010/9/9 16:39:41 | 显示全部楼层
是啊,五个感觉太多了
发表于 2010/9/9 16:51:01 | 显示全部楼层
这样子

SELECT
(select decode(lookup_code, null, 0, 1) invalid from tg_purchase_acc_ymd_head group by lookup_code ,creater having creater=FND_GLOBAL.USER_ID) ymd,
(select decode(lookup_code, null, 0, 1) invalid from tg_purchase_acc_ttj_head group by lookup_code,creater  having creater=FND_GLOBAL.USER_ID) ttj,
(select decode(lookup_code, null, 0, 1) invalid from tg_purchase_acc_yhd_head group by lookup_code, creater having creater =FND_GLOBAL.USER_ID) yhd,
(select decode(lookup_code, null, 0, 1) invalid from tg_purchase_acc_sj_head group by lookup_code,creater   having creater=FND_GLOBAL.USER_ID) sj,
(select decode(lookup_code, null, 0, 1) invalid from tg_purchase_acc_bzw_head group by lookup_code,creater  having creater=FND_GLOBAL.USER_ID) bzw
FROM dual

创建一个VO就可以了。

另外,觉得你的SQL中group by很奇怪,感觉没有必要,不能直接用where吗?
 楼主| 发表于 2010/9/9 19:46:01 | 显示全部楼层
回复 sumury 的帖子

你太棒了,这个方法真好file:///C:/DOCUME~1/雨霖/LOCALS~1/Temp/N96Y}_N6CE9HW~YM}976{F3.gif
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

GMT+8, 2025/11/29 06:43 , Processed in 0.017979 second(s), 14 queries , File On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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