zoukankan      html  css  js  c++  java
  • Form Builder环境配置与编译(FRM18108处理)

    1.   安装FormBuilder

    ·        Form Builder有6i和10g两种主要版本,请与正式环境中实际使用的为准,本文以6i为例。

    ·        如果只安装了开发版的Form Builder6i,则编译fmb文件时要求本地另提供Oracle本地监听器(Oracle快捷版无此服务)

     

    2.   本地(Windows)环境配置

    目标:能本地的FormBuilder中正常编译fmb文件。

    a.   从服务下载form,resource两个文件夹到本地任意位置

        如:/u01/oracle/prodappl/au/11.5.0/forms/ZHS,/u01/oracle/prodappl/au/11.5.0/resource

    b.   把本地这两个文件夹添加到注册表

         在命令行中用regedit打开注册表编辑器,找到以下这个项:

       HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\FORMS60_PATH

        该项原值为:E:\orant\TOOLS\OPEN60\PLSQLLIB

        修改之后为:E:\orant\TOOLS\OPEN60\PLSQLLIB;E:\oracleForm\resource;E:\oracleForm\form

        注:如果FORMS60_PATH项的路径与上述不同,请在Oracle层下搜索一下,不要随便新建

    c.   用FormBuilder打开要编辑的fmb文件

          打开文件后使用“文件->连接”连接到Oracle数据库;再通过“文件管理编译文件”即可完成编译,在fmb的同目录下生成fmx文件。

         注:如果打开文件时弹出一堆报错窗口,请放到没有空格及中文的简单路径下再试;

           本地编译的文件直接放到服务器上使用可能会有乱码,正式版建议直接在服务器中编译。

     

    3.   服务器(Linux)环境配置

         目标:在服务器中编译fmb文件,生成fmx文件。

    a.   上传文件

         用SSH连接Linux服务器,把修改过的文件放到服务器中(建议备份fmb及fmx原文件),本人路径为/u01/oracle/prodappl/cux/11.5.0/forms/ZHS

    b.   配置环境

          回到/u01/oracle/****appl/目录,以我所用的环境为例,要依次执行以下两个文件:

         [oraprod@fin02 prodappl]$ .APPSORA.env

         [oraprod@fin02 prodappl]$ .APPSPROD_fin02.env

         注:配置文件间存在相互调用,所以目录中可能不止上述两个env文件。

    c.   编译文件(实际应用时注意路径差异)

         命令如下,其中XXX为文件名:

         f60genmodule=/u01/oracle/prodappl/cux/11.5.0/forms/ZHS/******.fmb userid=apps/appsoutput_file=/u01/oracle/prodappl/cux/11.5.0/forms/ZHS/******.fmx

         编译过程中本人碰到如下错误:

         FRM-18108: Failed to load the following objects.

         Source Module:APPSTAND.fmb

       ……

         PL/SQL ERROR 307 at line 40, column 10

         too many declarations of'QUERY_RANGE' match thiscall

         

         经分析,这是重复引用问题,因为服务器中存在不同语言的多个版本的form(分别放在/ZHS/, /US/目录下),所以报错。

         我解决的方法是细化引用位置:

         [oradevp@fintest03 prodappl]$ echo$FORMS60_PATH

         看显示的路径中是否有form目录的配置,如果没有,就在prodappl目录下的env文件中寻找$FORMS60_PATH变量的配置,增加一个“/u01/oracle/prodappl/au/11.5.0/forms/ZHS”,限定范围,即可正常编译。

     

    4.   开发需求:关闭窗口时不允许提示保存,只能选择是否放弃所有更改

    ·        问题描述:EBS系统中的一个自定义功能下,当关闭窗口时,如果窗口内有更改,它会弹出是否保存的提示。但如果此时点“是”,它就会保存本不符合校验规则的数据。

    ·        在"CLOSE-WINDOS"触发器中发现如下代码:

         APP_CUSTOM.CLOSE_WINDOW(:SYSTEM.EVENT_WINDOW);

    ·        在该procedure下找到对目标窗口的处理,当前的处理方法是:

         app_window.close_first_window;

    ·        app_window是直接调用的APPCORE.dll中的公有方法,无法修改,所以改为如下处理:

     fnd_message.set_string('现在关闭窗口将放弃所有操作,确认?');

     if fnd_message.warn then             --表示选择“是”

       close_form('CUXCEXCABMR');    --参数是当前的fmb文件名

     Else   --表示选择“取消”

       return;

     endif;

    ·        其中的close_form(FORM_NAME)方法就是关闭当前整个from,我还试过clear_form()等方法,没有起到理想效果。

  • 相关阅读:
    [ZJOI2010] 数字计数
    [USACO] 2004 Open MooFest 奶牛集会
    数星星
    [SCOI2011] 糖果
    西瓜种植
    [NOI2018] 归程
    [APIO2012] 派遣
    小K的农场
    妮可妮可妮 [Hash]
    [ZJOI2012] 灾难
  • 原文地址:https://www.cnblogs.com/ebsblog/p/6141130.html
Copyright © 2011-2022 走看看