订购日期的 Lotus 排序视图无法正常工作
Lotus sorting view on orderdate does not work properly
我创建了一个视图,其中还有一个包含日期的列。该列可以按升序和降序排序。这是我的列属性值:
但问题是视图没有正确排序日期:
这里是订单日期字段本身的屏幕截图:
这里是文档的屏幕截图,其中订单日期在视图中是乱序的:
更新
有些文档的订购日期是文本而不是日期。我通过 java 代理创建这些文档。字段orderdate我是这样填写的:
SimpleDateFormat formatterDatumForField=new SimpleDateFormat("dd-MM-yyyy");
docOrder.replaceItemValue("Orderdatum",formatterDatumForField.format(currentDateForField));
但它保存为文本而不是日期。有人知道为什么吗?
我不清楚为什么它对你不起作用,但你可以在列公式中用类似这样的东西强制执行它
dateForSure := @TextToTime(OrderDatum);
@Text(@Year(dateForSure)) + "-" + @Text(@Month(dateForSure)) + "-" + @Text(@Day(dateForSure));
此外:您的 Java 代码保存了一个文本值,因为 SimpleDateFormat returns 的 format() 方法是一个 StringBuffer。 ReplaceItemValue 方法在其输入为 String 或 StringBuffer 时生成一个文本项。假设您的表单将 OrderDatum 定义为 Time/Date 字段,您可以在代码中调用 Document.ComputeWithForm 以强制它将文本项转换为 Time/Date。另一种方法 - 考虑到调用 ComputeWithForm 的潜在副作用,可能更可取的是在 Java 代码中创建一个 DateTime 对象并将其传递给 ReplaceItemValue 方法。
这是因为 formatterDatumForField.format(currentDateForField)
returns 字符串而不是 date/time 值。假设 currentDateForField 是一个 date/time 值,您应该更改
SimpleDateFormat formatterDatumForField=new SimpleDateFormat("dd-MM-yyyy");
docOrder.replaceItemValue("Orderdatum",formatterDatumForField.format(currentDateForField));
至
docOrder.replaceItemValue("Orderdatum",currentDateForField);
问题是 orderdate 字段是由后端代理设置的,而这个字段是用字符串设置的。
我知道将当前时间保存为 DateTime 对象,现在可以使用了:
DateTime timenow = session.createDateTime("Today");
timenow.setNow();
docOrder.replaceItemValue("Orderdatum", timenow);
我创建了一个视图,其中还有一个包含日期的列。该列可以按升序和降序排序。这是我的列属性值:
但问题是视图没有正确排序日期:
这里是订单日期字段本身的屏幕截图:
这里是文档的屏幕截图,其中订单日期在视图中是乱序的:
更新
有些文档的订购日期是文本而不是日期。我通过 java 代理创建这些文档。字段orderdate我是这样填写的:
SimpleDateFormat formatterDatumForField=new SimpleDateFormat("dd-MM-yyyy");
docOrder.replaceItemValue("Orderdatum",formatterDatumForField.format(currentDateForField));
但它保存为文本而不是日期。有人知道为什么吗?
我不清楚为什么它对你不起作用,但你可以在列公式中用类似这样的东西强制执行它
dateForSure := @TextToTime(OrderDatum);
@Text(@Year(dateForSure)) + "-" + @Text(@Month(dateForSure)) + "-" + @Text(@Day(dateForSure));
此外:您的 Java 代码保存了一个文本值,因为 SimpleDateFormat returns 的 format() 方法是一个 StringBuffer。 ReplaceItemValue 方法在其输入为 String 或 StringBuffer 时生成一个文本项。假设您的表单将 OrderDatum 定义为 Time/Date 字段,您可以在代码中调用 Document.ComputeWithForm 以强制它将文本项转换为 Time/Date。另一种方法 - 考虑到调用 ComputeWithForm 的潜在副作用,可能更可取的是在 Java 代码中创建一个 DateTime 对象并将其传递给 ReplaceItemValue 方法。
这是因为 formatterDatumForField.format(currentDateForField)
returns 字符串而不是 date/time 值。假设 currentDateForField 是一个 date/time 值,您应该更改
SimpleDateFormat formatterDatumForField=new SimpleDateFormat("dd-MM-yyyy");
docOrder.replaceItemValue("Orderdatum",formatterDatumForField.format(currentDateForField));
至
docOrder.replaceItemValue("Orderdatum",currentDateForField);
问题是 orderdate 字段是由后端代理设置的,而这个字段是用字符串设置的。
我知道将当前时间保存为 DateTime 对象,现在可以使用了:
DateTime timenow = session.createDateTime("Today");
timenow.setNow();
docOrder.replaceItemValue("Orderdatum", timenow);