使用多个字段Xpages在视图结果中搜索

时间:2014-02-14 12:57:51

标签: xpages xpages-ssjs

我已多次尝试在“搜索”视图中输入日期范围。 我在搜索视图中输入的搜索字符串如下所示。

compositeData.Operasjon = "ST-MOD"

" FIELD OprPlanGruppe_1 = " + compositeData.Operasjon + " AND FIELD OprDato_1 = " +

    dates.substring(0, dates.length() - 1);

结果是只使用最后一个键值对(FIELD OprDato_1 = 11.02.2014)来过滤

孔代码如下:

    var idag:java.util.Date = new java.util.Date();
var cal:java.util.Calendar =java.util.Calendar.getInstance();
var dateFormat:java.text.SimpleDateFormat = new java.text.SimpleDateFormat("dd.MM.yyyy");

cal.set(java.util.Calendar.HOUR_OF_DAY, 0); // ! clear would not reset the hour of day !
cal.clear(java.util.Calendar.MINUTE);
cal.clear(java.util.Calendar.SECOND);
cal.clear(java.util.Calendar.MILLISECOND);

var dates = "";
var i;

for(i = 0; i < 7; i++){
    cal.set(java.util.Calendar.DAY_OF_WEEK, cal.getFirstDayOfWeek() + i);
    dates += dateFormat.format(cal.getTime()) + ",";
}

dates = dates.replace("undefined", "");
return " field OprPlanGruppe_1 = " + compositeData.Operasjon + " AND FIELD OprDato_1 = " + dates.substring(0, dates.length() - 1);

是否有可能在过滤器查询中的字段后添加多个值?

Ex:FIELD OprDato1 = 10.02.2014,11.02.2014

1 个答案:

答案 0 :(得分:0)

您希望在视图中显示在“OprDato_1”字段中具有当前周内日期的所有文档。您可以使用xp:viewPanel中的“在视图中搜索结果”属性。它使用全文搜索,必须具有full text search的语法。您可以将日期与“&gt; =”和“&lt; =”进行比较。因此,在特定日期范围内查找日期的简便方法是

FIELD OprDato_1 >= 10.02.2014 AND FIELD OprDato_1 <= 16.02.2014

或更短

[OprDato_1] >= 10.02.2014 AND [OprDato_1] <= 16.02.2014

您计算搜索字符串的代码如下所示:

var cal:java.util.Calendar =java.util.Calendar.getInstance();
var dateFormat:java.text.SimpleDateFormat = new java.text.SimpleDateFormat("dd.MM.yyyy");
cal.set(java.util.Calendar.DAY_OF_WEEK, cal.getFirstDayOfWeek());
var firstDate = dateFormat.format(cal.getTime());
cal.set(java.util.Calendar.DAY_OF_WEEK, cal.getFirstDayOfWeek() + 6);
var lastDate = dateFormat.format(cal.getTime());
return "FIELD OprPlanGruppe_1 = " + compositeData.Operasjon + 
       " AND FIELD OprDato_1 >= " + firstDate + 
       " AND FIELD OprDato_1 <= " + lastDate

此代码计算当前周的日期范围。您可以将cal设置为任何其他日期和日期范围,然后是该日期的一周。