Oracle Forms - 搜索非数据库项目

Posted

技术标签:

【中文标题】Oracle Forms - 搜索非数据库项目【英文标题】:Oracle Forms - searching on a non-database item 【发布时间】:2016-12-14 09:28:38 【问题描述】:

我有一个包含四个项目的数据块 OBJECTS:

身份证 TYPE_ID(外键,TYPES表中的命名ID) TYPE_DESCRIPTION(非数据库项,在表 TYPES 中命名为DESCRIPTION) STA_ID(不相关)

在表单中,我希望能够查询 TYPE_DESCRIPTION(非数据库项目),方法是键入一个短语,如“S%”或“%P”,并获得所有列的结果,按 TYPE_DESCRIPTION 过滤。

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

【问题讨论】:

“所有与短语匹配的字段”是什么意思?最终选择应该如何?如果 OPIS_TYPU 不是数据库项目,我认为只有 KOMENTARZ 项目可用。 能否提供数据模型? 【参考方案1】:

我找到了解决问题的方法。这是 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

【讨论】:

以上是关于Oracle Forms - 搜索非数据库项目的主要内容,如果未能解决你的问题,请参考以下文章

使用复选框在父表中搜索 (Oracle Forms Builder)

Xamarin.Forms 仿照京东搜索记录控件

Oracle Forms 编译器将类型标记为函数

Oracle Forms 作为“前端”与 Microsoft Access 相比如何?

我们可以针对 MySQL 数据库运行 Oracle Forms 吗?

Oracle Forms:无法使用数组引用项目名称