0

我有一个向只读浏览器提供数据的 SDO。SDO 查询连接多个表,并具有计算字段和自然数据字段。

用户现在想要一个搜索工具,因此浏览器将只显示搜索词出现在任何文本字段中的行。

例如,他们想查看行

customer.name matches "*bob*" OR
customer.address1 matches "*bob*" OR
product.description matches "*bob*" OR 
calc_field_1 matches "*bob*" OR
calc_field_2 matches "*bob*" OR ...

理想情况下,答案将在创建 SDO 输出时对其进行过滤 - 但我也很乐意在前往智能浏览器或智能浏览器的途中过滤数据。

4

2 回答 2

1

如果您按照书面方式实施,您试图解决的业务问题充满了性能问题。我建议

  1. 向表或数据库添加另一个字符列,
  2. 将其他列中的所有单词放入其中,
  3. 将单词索引应用于新列,
  4. 对该列进行搜索,然后链接回源表。

它会更快,更容易使用。

于 2013-12-18T02:27:41.833 回答
0

最后我使用了一个非常简单的解决方案。用户可以输入他们正在寻找的字符串。如果字符串在浏览器的单元格中,则该单元格以黄色突出显示。

在此之前,用户必须上下滚动以试图在数百行中发现感兴趣的单元格。我们没有时间或预算去做任何更高级的事情。

智能浏览器中的重要代码是这样的......

on row-display of br_table in frame f-main
do:
    if rowObject.field1 matches "*BOB*" then 
       rowObject.field1:BGCOLOR in browse br_table = 14.
    if rowObject.field2 matches "*BOB*" then 
       rowObject.field2:BGCOLOR in browse br_table = 14.
    if rowObject.field3 matches "*BOB*" then 
       rowObject.field3:BGCOLOR in browse br_table = 14.

    ... etc ...

只寻找 Bob 并不是硬编码的——但你应该明白这一点。

于 2014-01-11T19:22:01.563 回答