新建oracle form注意事项

1.form一些报错及解决方法

1.1 提示表和视图不存在

解决方案:

a.检查是否有权限对表有操作权限。如果没有的话进行赋权,例如:grant all on csf.cr_letter_config_BAK to csf;

b.在数据源和存储过程里面的表钱加上前缀.例如:csf.cr_letter_config。

c.建form相关库表和编译form要与uat系统相同的账号,不同账号权限会不同。在编译脚本可以看到用的是哪个账号 ,如果不是要在uat相同的账号下建表,用相同的账号环境,比如说我在mbsadm账号下建的表,而uat用的是csf账号,mbsadm权限比csf大,在csf查询不到mbsadm建的表,就会报错,这时要把mbsadm的表干掉,登录csf账号建,用csf账号下的表。

1.2.不能再此创建记录

a.权限

b.检查表的字段类型和form的数据类型是否是相同的,比如说写vachar类型的就不能插在nunber类型里面。

1.3.表中已有记录

a.form模板中有toobar工具条,里面包含存储,查询,删除,更新,清空记录,上一条记录,下一条记录,帮助等按钮功能,已经封装好。不需要重复写相同功能

比如你再写一个保存功能,跟自带的commit form重复了,等于保存了两次。

2.新form权限配置

如果需求是完全新增的一个from,你可以参考一个form作为模板进行开发,可以删除form其他的内容,但是不能一些附加库和toobar是不能删除的。 除此之外你还要对改form进行权限配置,否则无法增删改查,无法访问form等权限全局触发器有WHEN-NEW-FORM-INSTANCE触发器,里面有个INIT_FORM的函数,用的是附加库中自带的方法,在forms是打不开的,可以把库从snv代码拷贝出来用工具打开,分析。

配置权限的代码如下:

pkg_access_right > ,

select a.ar_id,
               a.access_right_code,
               b.ins,b.upd,b.del
        from   app_user_profile c,--用户信息
               app_user_detail d,--用户详情表
               app_user_group_access b,--用户组
               app_access_right a--模块信息
        where  c.user_name = 'P2561'
        and    c.up_id = d.up_id
        and    d.ug_id = b.ug_id
        and    b.ar_id = a.ar_id
        and    d.system_code = 'CSF'
        and    a.access_right_code in ('CRS9034','CRS9035')
        and    a.system_code = 'CSF';
        
        forms信息控制表(描述)csf_program_info表

说明:app_user_profile 用户表不能随便修改,否则可能会造成账号无法登陆等情况,会被user投诉,你可以进行反推,配置你的数据。



3.为新form新增菜单

新form对应的入口有对应的菜单,菜单文件为mmb文件,先找你新增的form属性哪个系统,在改系统下找到对应的mmb文件,用oracle forms builder工具打开,新增菜单,编译生成mmx文件,编译方法和编译form的方法是一样的。 注意要为新form配置好权限,否则是灰色禁用的。


4.在数据库中为新froms配置,打开uat没改变

数据库是否有commit,重新登录uat


5.代码规范

PROCEDURE Insert_row_prog IS CURSOR C IS SELECT PROG_ID FROM csf.cr_letter_config WHERE PROG_ID = :CR_LETTER_CONFIG.PROG_ID; V_ROWID VARCHAR2(200) := NULL; BEGIN GET_SEQ_ID; insert into csf.cr_letter_config (REPORT_NAME, PROG_NAME, THE_SCHEDULE_TIME, THE_PUBLIC_FOLDER_NAME, BINDING_AND_EFFECTIVE_DATE, AUTOEXT, TICKLER_CODE, TICKLER_CONTENT, TICKLER_SHORT_DESCRIPTION, TICKLER_LONG_DESCRIPTION, ENT_USER, ENT_ID, END_DATE, ENT_IMPORT, CONTRACT_PERIOD, PROG_ID ) values (:cr_letter_config.report_name, :cr_letter_config.prog_name, :cr_letter_config.the_schedule_time, :cr_letter_config.the_public_folder_name, :cr_letter_config.binding_and_effective_date, :cr_letter_config.autoext, :cr_letter_config.tickler_code, :cr_letter_config.tickler_content, :cr_letter_config.tickler_short_description, :cr_letter_config.tickler_long_description, :cr_letter_config.ent_user, :cr_letter_config.ent_id, :cr_letter_config.ent_date, :cr_letter_config.ent_import, :cr_letter_config.contract_period, :cr_letter_config.prog_id ); OPEN C; fetch C into :CR_LETTER_CONFIG.PROG_ID; if (C%NOTFOUND) then close C; raise no_data_found; end if; CLOSE C; show_msg('E','end insert_row_prg'); END Insert_row_pro


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值