查询用于视图中的搜索

时间:2017-03-02 10:39:15

标签: xpages

我有一个xpages预订应用程序,可以查看搜索人员的预订记录。由于搜索值可能包含"("或")"或其他符号所以我会在代码中使用通配符搜索。此外,我需要确保搜索结果正确返回,因此我创建了额外的字段以将两个字段连接在一起(例如Fieldname1 +++ Fieldname2)。我将搜索代码放入视图中(在属性 - >数据 - >在视图结果中搜索)

以下是搜索的代码

var qstring= "";
if (
(sessionScope.officerSearch != null && sessionScope.officerSearch != "")||
(sessionScope.startDateSearch != null && sessionScope.startDateSearch != "")|| 
(sessionScope.returnDateSearch != null && sessionScope.returnDateSearch !=""))
{
    qstring = " ( FIELD location+++group contains " + sessionScope.locationSearch +"+++"+ sessionScope.groupSearch  +
    " | FIELD location+++officer contains " + sessionScope.locationSearch +"+++"+ sessionScope.officerSearch +")" + 
    " & FIELD dateYYYYMM >=" + sessionScope.startDateSearch + 
    "& FIELD dateYYYYMM <=" + sessionScope.returnDateSearch;
}
return qstring;

当我运行应用程序时,我有两个问题。如果我只搜索一名官员,我会得到一个例外(注释错误:查询不可理解)。如果我搜索多个官员,我不会得到例外,但结果不会返回任何内容。所以我使用一个计算字段,将搜索代码粘贴到那里并再次运行程序。计算字段显示我搜索的内容。

由于我将代码放在计算字段中,我可以读取搜索的整个查询

问题1:如果我搜索一名官员,虽然它发生异常,但我可以想象查询是这样的

(FIELD位置+++组包含&#34; WEST +++ GP AM(OSO)&#34; | FIELD位置+++官员包含&#34; WEST +++ John Freeman &#34;)&amp; FIELD COMPYMNUM&gt; = 201001&amp; FIELD dateYYYYMM&lt; = 201712

如果我将此查询放在Lotus Notes客户端中,并且单击“搜索”按钮,则会正确返回结果

问题2:如果我搜索多个人员,虽然结果没有返回任何内容,但计算字段会显示这样的查询

(FIELD位置+++组包含&#34; WEST +++ GP AM(OSO)&#34; | FIELD位置+++官员包含&#34; WEST +++ John Freeman,Kevin Sims,Sally Johnson,Tom Chan,William Ross &#34;)&amp; FIELD dateYYYYMM&gt; = 201001&amp; FIELD dateYYYYMM&lt; = 201712

我将此查询放在Lotus Notes Client中,然后点击“搜索”按钮,它也会正确返回结果。

我觉得很奇怪,Lotus Notes客户端可以返回正确的结果,但xpages不能。此外,我不明白为什么如果我搜索一名警官,它会导致异常(查询不可理解),如果我搜索多名警官,则不会例外,也不会返回结果。

我认为我得到例外或审查的原因不是结果是我有&#34;(&#34;和&#34;)&#34;在搜索值?但是,我使用外卡搜索来限制搜索条件(或者我误解了外卡搜索?)

我认为另一个原因是现场位置+++官员。如果搜索多名警官,该字段仅识别一名警官,例如&#34; WEST +++ John Freeman,Kevin Sims,Sally Johnson,Tom Chan,William Ross &#34;?

最后但并非最不重要的是,代码中可能存在编码错误?但是代码中有错误,我猜Lotus Notes客户端不会返回结果。

我尝试解决问题,但每次运行应用程序时,仍然会出现这些问题。

我的查询有错吗?

如果有人让我知道我的错误,感激不尽?谢谢。

0 个答案:

没有答案