2014-02-14 47 views
0

我已经尝试了几次,在搜索视图中输入日期范围。 我放入搜索视图的搜索字符串如下。用多字段搜索结果字段Xpages

compositeData.Operasjon = "ST-MOD" 

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

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

其结果是,只有最后一个密钥值对(FIELD OprDato_1 = 2014年2月11日)是用来过滤

空穴代码如下:

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); 

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

例:FIELD OprDato1 = 10.02.2014,11.02.2014

+0

http://stackoverflow.com/questions/2479555/search-for-a-date-between-given-ranges-lotus –

+0

@Frantisek:我不确定你所链接的问题是否真的与此有关一个在这里:我们被问到XSP中的FT Search,那里的问题涉及LotusScript中的NotesDatabase.Search,使用公式语法...;我删除了“lotus-notes”标签以减少混淆 –

+0

其中一个问题可能是您正在使用的语法:使用“FIELD OprDato1 = 10.02.2014,11.02.2014”的搜索将查找具有“10.02.2014”在任何领域的'OprDato1'或'11.02.2014'中。如果您只想在该字段中搜索,则需要将该查询括在括号中:“FIELD OprDato1 =(10.02.2014,11.02.2014)”。 –

回答

0

要显示,鉴于其有场“OprDato_1”,它是当前一周内的日期的所有文件。您可以使用xp:viewPanel的“搜索视图结果”属性。它使用全文搜索并且必须具有full text search的语法。您可以将日期与“> =”和“< =”进行比较。所以,一个简单的方法来寻找在某个日期范围内的日期是

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到任何其他日期和日期范围,然后是该日期的一周。

+0

我发现的是OprDate_1字段的类型是String not date。无法将字符串与日期进行比较而无需将字符串转换为日期。无法直接在ftsearch中执行此操作。致力于将文本转换为日期。 – user2599699

+0

如果您需要在OprDate_1中保留文本,您可以创建如下搜索字符串:'... AND([OprDato_1] =“10.02.2014”或[OprDato_1] =“11.02.2014”或...或[ OprDato_1] =“16.02.2014”)'。但是,将搜索字段转换为日期会更好,因为它将独立于本地设置。在字符串中保存日期和时间总是“危险的”。 –

+0

@ user2599699:你能让它运行吗?现在全文搜索工作吗? –