多值日期字段搜索不起作用

时间:2015-02-05 10:38:53

标签: xpages xpages-ssjs

我有一个名为freeDaysPool的多值字段,它有多个日期作为字符串。使用以下代码,搜索不会返回任何内容。如果我离开该字段,搜索与其他两个字段一起工作正常。我读到我应该使用CONTAINS与多值字段,但后来我的查询不可理解。

我已经尝试将后端字段作为日期字段和文本字段,并测试了各种查询组合和日期格式,但没有运气。任何帮助都非常感谢。

这是搜索按钮代码:

var query = new Array("");
var cTerms = 0;

// Field 1
var search01 = getComponent("searchcustomReservationField01").getValue();
if (@Contains(@Text(search01),"any city")){"";}
else {query[cTerms++] = '[customReservationField01]="' + search01 +'"'};  

// Field 2
var search02 = getComponent("searchcustomReservationField02").getValue();
if (@Contains(@Text(search02),"any city")){"";}
else {query[cTerms++] = '[customReservationField02]="' + search02 + '"'};

// Date 1
var formatter = new java.text.SimpleDateFormat("d.M.yyyy");
query[cTerms++] = 'FIELD freeDaysPool = ' + formatter.format(getComponent("searchcustomDateField01").getValue());

// if query is still empty, we fill it with asterisk
if(query == "" || query == null){
    query[cTerms++] = "*";
}
// make all as string
qstring = query.join(" AND ").trim();
sessionScope.searchString = qstring;

它将返回查询:

[customReservationField01]="Oslo" AND [customReservationField02]="Oslo" AND FIELD freeDaysPool = 6.2.2015

2 个答案:

答案 0 :(得分:0)

公式中的AFAIK日期值(以及查询是公式)必须像

一样注明
[06.02.2015]

比较它们。只是尝试在Notes客户端中使用您的公式进行全文搜索。如果您得到结果并且没有错误,则找到正确的格式。这至少是我测试查询的方式,因为我多年来都无法提醒语法:-D

答案 1 :(得分:0)

感谢您的帮助!似乎Domino将字段类型保留为日期字段,即使您将其更改回文本字段(注意到来自FTsearch的注释)。我创建了全新的文本字段,并将日期添加为dd.MM.yyyy格式的字符串。我也搜索它们作为字符串,它工作正常。 更改后的代码位现在如下所示:

// Date 1
var formatter = new java.text.SimpleDateFormat("dd.MM.yyyy");
query[cTerms++] = '[freeDays] CONTAINS "' + formatter.format(getComponent("searchcustomDateField01").getValue())+'"';