Nuri Ensing
Nuri Ensing

Reputation: 2030

Lotus sorting view on orderdate does not work properly

I have created a view in which I also have a column which holds dates. This column can be sorted on ascending and descending. This is my column properties value:

enter image description here

But the problem is that the view does not sort the dates properly:

enter image description here

And here a screenshot of the orderdate field itself:

enter image description here

And here screenshot of the document with the orderdate that is out of order in the view:

enter image description here

Update

Some documents had the orderdate as text instead of date.. I create these documents through a java agent. The field orderdate I fill in like this:

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

But it is saved as text instead of date. Anyone knows why?

Upvotes: 1

Views: 686

Answers (3)

Nuri Ensing
Nuri Ensing

Reputation: 2030

Problem was that orderdate field was set by a backend agent and this field was set with a string.

I know saved the current time as a DateTime object and now it works:

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

 docOrder.replaceItemValue("Orderdatum",  timenow);

Upvotes: 1

JSmart523
JSmart523

Reputation: 2497

It's because formatterDatumForField.format(currentDateForField) returns a String instead of a date/time value. Assuming that currentDateForField is a date/time value, you should change

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

to

docOrder.replaceItemValue("Orderdatum",currentDateForField);

Upvotes: 0

Richard Schwartz
Richard Schwartz

Reputation: 14628

It's not clear to me why it's not working for you, but you can brute force it with something like this in the column formula

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

Also: your Java code saves a text value because the format() method of SimpleDateFormat returns a StringBuffer. The ReplaceItemValue method generates a text item when its input is a String or StringBuffer. Assuming your form defines OrderDatum as a Time/Date field, you can call Document.ComputeWithForm in your code to force it to convert the text item to a Time/Date. Another method - probably preferable given the potential side-effects of calling ComputeWithForm would be to create a DateTime object in your Java code and pass it to the ReplaceItemValue method instead.

Upvotes: 0

Related Questions