orderdate上的Lotus排序视图无法正常工作

时间:2017-01-10 09:50:30

标签: sorting lotusscript lotus

我创建了一个视图,其中我还有一个包含日期的列。此列可以按升序和降序排序。这是我的列属性值:

enter image description here

但问题是视图没有正确排序日期:

enter image description here

这里是orderdate字段本身的屏幕截图:

enter image description here

此处视图中的orderdate顺序错误的文档截图:

enter image description here

更新

有些文档将orderdate作为文本而不是日期..我通过java代理创建这些文档。字段orderdate我填写如下:

SimpleDateFormat formatterDatumForField=new SimpleDateFormat("dd-MM-yyyy");
docOrder.replaceItemValue("Orderdatum",formatterDatumForField.format(currentDateForField));

但它保存为文本而不是日期。谁知道为什么?

3 个答案:

答案 0 :(得分:1)

问题是orderdate字段是由后端代理设置的,而且这个字段是用字符串设置的。

我知道将当前时间保存为DateTime对象,现在可以正常工作:

 DateTime timenow = session.createDateTime("Today");
 timenow.setNow();

 docOrder.replaceItemValue("Orderdatum",  timenow);

答案 1 :(得分:0)

我不清楚为什么它不适合你,但你可以在列公式中用这样的东西强制它

dateForSure := @TextToTime(OrderDatum);
@Text(@Year(dateForSure)) + "-" + @Text(@Month(dateForSure)) + "-" + @Text(@Day(dateForSure)); 

另外:您的Java代码保存文本值,因为SimpleDateFormat的format()方法返回StringBuffer。 ReplaceItemValue方法在其输入为String或StringBuffer时生成文本项。假设您的表单将OrderDatum定义为时间/日期字段,您可以在代码中调用Document.ComputeWithForm以强制它将文本项转换为时间/日期。另一种方法 - 考虑到调用ComputeWithForm的潜在副作用,可能更好的方法是在Java代码中创建一个DateTime对象,并将其传递给ReplaceItemValue方法。

答案 2 :(得分:0)

因为formatterDatumForField.format(currentDateForField)返回String而不是日期/时间值。假设currentDateForField是日期/时间值,您应该更改

SimpleDateFormat formatterDatumForField=new SimpleDateFormat("dd-MM-yyyy");
docOrder.replaceItemValue("Orderdatum",formatterDatumForField.format(currentDateForField));

docOrder.replaceItemValue("Orderdatum",currentDateForField);