2016-12-14 63 views
-1

我有四個項目的數據塊搜索對象:的Oracle Forms - 在非數據庫項目

  • ID
  • TYPE_ID(外鍵,表類型的命名ID)
  • TYPE_DESCRIPTION(非數據庫項目的表類型,名爲DESCRIPTION)
  • STA_ID(非相關)

在我希望能夠在TYPE_DES查詢表格CRIPTION(非數據庫項目),通過鍵入一個詞組(如「S%」或「%P」)並獲得所有列的結果,並按TYPE_DESCRIPTION進行過濾。

截圖: https://imgur.com/gallery/UbDnH

+0

你是什麼意思與「所有字段匹配短語」?最終選擇應該如何?如果OPIS_TYPU是非數據庫項目,我只看到KOMENTARZ項目可用。 –

+0

你能提供數據模型嗎? –

回答

0

我找到了一個解決問題的辦法。下面是該PRE_QUERY觸發代碼:

declare 
where_str varchar2(512) := 'where 1 = 1'; 
begin 

if (:OBJECTS.TYPE_DESCRIPTION is not null) then 
    if instr(:OBJECTS.TYPE_DESCRIPTION, '%') <> 0 then 
    where_str := where_str || 
    'and OBJECTS.TYPE_ID in (select TYPES.ID from TYPES ' || 
    'where TYPES.DESCRIPTION like '''|| replace(:OBJECTS.TYPE_DESCRIPTION, '''', '''''') ||''')'; 
    else 
    where_str := where_str || 
    'and OBJECTS.TYPE_ID in (select TYPES.ID from TYPES ' || 
    'where TYPES.DESCRIPTION='''|| replace(:OBJECTS.TYPE_DESCRIPTION, '''', '''''') ||''')'; 
    end if; 
end if; 

set_block_property('OBJECTS', default_where, where_str); 

end; 

http://oracleebsgeeks.blogspot.com/2011/12/querying-on-non-database-field-in.html