我创建了一个视图,其中我还有一个包含日期的列。此列可以按升序和降序排序。这是我的列属性值:
但问题是视图没有正确排序日期:
这里是orderdate字段本身的屏幕截图:
此处视图中的orderdate顺序错误的文档截图:
更新
有些文档将orderdate作为文本而不是日期..我通过java代理创建这些文档。字段orderdate我填写如下:
SimpleDateFormat formatterDatumForField=new SimpleDateFormat("dd-MM-yyyy");
docOrder.replaceItemValue("Orderdatum",formatterDatumForField.format(currentDateForField));
但它保存为文本而不是日期。谁知道为什么?
答案 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);