Oracle Form表單開發的問題

來源:互聯網
上載者:User

  Oracle Form表單開發的問題(FRM-40831)

       做一個工程用款資金Form,在查詢介面可以按日期範圍及其他情況
  可以查詢,其他欄位查詢時是正確的,但使用時間查詢時會出現以
  下報錯:
      “FRM-40831:出現截段:域op_date至太長”,
   資料中顯示"FRM-40505: ORACLE 錯誤: 不能執行查詢.
           --------------------------------------------------------------
           ORA-00905: 缺少關鍵字"
  op_date是我的一張表中的一欄位:表結構如下:
 
-- 在CUX資料表空間中建立資料表
create table CUX.CUX_OLD_PROJECT_ALL
(
  op_newid           Number Not Null,
  op_vendorid        Varchar2(150),                     -- 供應商編碼
  op_vendorname      Varchar2(150),                     -- 供應商名稱
  op_snnumber        Varchar2(150) Not Null,            -- 申請序號
  op_date            Date,                              -- 申請用款時間
  op_depentment      Varchar2(150),                     -- 申請部門
  op_typename        Varchar(10) Not Null,              -- 月度計劃用款
  op_project         Varchar2(150),                     -- 項目
  op_description     Varchar2(150),                     -- 付款內容
  op_types           Varchar2(150),                     -- 支付類型
  op_status          Varchar2(10) Not Null,             -- 合約狀態
  op_amount          Number,                            -- 合約金額
  op_amounts         Number,                            -- 合約累計應付款
  op_totals          Number,                            -- 累計已付款
  op_checkamount     Number,                            -- 代繳代扣金
  op_modiamount      Number,                            -- 保修金
  op_amount_non      Number,                            -- 合約未付款
  op_amounts_non     Number,                            -- 合約累計未付款
  op_recamount       Number,                            -- 本月計劃用款
  op_memo            Varchar2(150),                     -- 情況說明
  op_okamount        Number,                            -- 批准用款金額
  op_conamount       Number,                            -- 本月實際支付款
 
  ORG_ID             NUMBER default to_number(decode(substrb(userenv('CLIENT_INFO'),1,1),' ',null,substrb(userenv('CLIENT_INFO'),1,10))),
  ATTRIBUTE_CATEGORY VARCHAR2(150),
  ATTRIBUTE1         VARCHAR2(150),
  ATTRIBUTE2         VARCHAR2(150),
  ATTRIBUTE3         VARCHAR2(150),
  ATTRIBUTE4         VARCHAR2(150),
  ATTRIBUTE5         VARCHAR2(150),
  ATTRIBUTE6         VARCHAR2(150),
  ATTRIBUTE7         VARCHAR2(150),
  ATTRIBUTE8         VARCHAR2(150),
  ATTRIBUTE9         VARCHAR2(150),
  ATTRIBUTE10        VARCHAR2(150),
  ATTRIBUTE11        VARCHAR2(150),
  ATTRIBUTE12        VARCHAR2(150),
  ATTRIBUTE13        VARCHAR2(150),
  ATTRIBUTE14        VARCHAR2(150),
  ATTRIBUTE15        VARCHAR2(150),
 
  -- WHO欄位
  LAST_UPDATE_DATE   DATE,
  LAST_UPDATED_BY    NUMBER(15),
  CREATION_DATE      DATE,
  CREATED_BY         NUMBER(15),
  LAST_UPDATE_LOGIN  NUMBER(15)
)

  查詢的trigger代碼入下:             
  procedure find_query(event in varchar2)
   is
  begin
    if (event='PRE-QUERY') then
    -- 查詢狀態
    if (name_in('parameter.G_Query_Find') = 'TRUE' ) then
      -- 供應商
      if (name_in('CUX_OLD_FIND.VENDOR_ID') is not null) then
          copy(name_in('CUX_OLD_FIND.VENDOR_ID'),'CUX_OLD_PROJECTCASH_V.OP_VENDORID');
      end if;
    
      --合約狀態
      if (name_in('CUX_OLD_FIND.OP_STATUS') is not null) then
          copy(name_in('CUX_OLD_FIND.OP_STATUS'),'CUX_OLD_PROJECTCASH_V.OP_STATUS');
      end if;
     
      -- 日期查詢
      if (name_in('cux_old_find.date_from1') is not null) then
          if (name_in('cux_old_find.date_to1') is not null) then
             app_find.query_range(:cux_old_find.date_from1,
                          :cux_old_find.date_to1,
               'CUX_OLD_PROJECTCASH_V.OP_DATE');
          else
             app_find.query_range(:cux_old_find.date_from1,
                    sysdate,
                'CUX_OLD_PROJECTCASH_V.OP_DATE');
          end if;
      else
          if (name_in('cux_old_find.date_to1') is not null) then
              app_find.query_range(to_date('1901-01-01','YYYY-MM-DD')
                         :cux_old_find.date_to1,
                  'CUX_OLD_PROJECTCASH_V.OP_DATE');
          end if;
      end if;

      Copy('FALSE', 'parameter.G_Query_Find');
     
    end if;
   end if;
  end find_query;

查過問題後,覺得是屬於Oracle的app_find.query_range有問題,經如下解決:

使用:  

   GO_BLOCK('CUX_OLD_PROJECTCASH_V');
   SET_BLOCK_PROPERTY('CUX_OLD_PROJECTCASH_V',DEFAULT_WHERE,var_default_where);
   EXECUTE_QUERY;

拋開app_find.query_range;

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.