Представление сортировки Lotus по дате заказа не работает должным образом

Я создал представление, в котором у меня также есть столбец с датами. Этот столбец можно сортировать по возрастанию и убыванию. Это значение свойств моего столбца:

введите здесь описание изображения

Но проблема в том, что представление неправильно сортирует даты:

введите здесь описание изображения

А вот скриншот самого поля orderdate:

введите здесь описание изображения

А вот скриншот документа с неправильной датой заказа в представлении:

введите здесь описание изображения

Обновить

В некоторых документах дата заказа была в виде текста вместо даты. Я создаю эти документы через java-агент. Поле orderdate я заполняю так:

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

Но он сохраняется как текст вместо даты. Кто-нибудь знает, почему?


person YdB    schedule 10.01.2017    source источник
comment
дата вашего заказа действительно дата? Показать свойства одного из документов, который показывает элемент, который вы используете в представлении   -  person Torsten Link    schedule 10.01.2017
comment
Покажите, пожалуйста, тот же скриншот из первого документа, который не по порядку (19-12-2016)   -  person Torsten Link    schedule 10.01.2017
comment
Хорошо, я снова обновляю свой вопрос   -  person YdB    schedule 10.01.2017
comment
@bboni Это первый столбец в представлении?   -  person Dmytro Pastovenskyi    schedule 10.01.2017
comment
@bboni это может быть связано с сортировкой в ​​первом столбце. Что произойдет, если вы нажмете на заголовок столбца, чтобы отсортировать документы (тогда это работает?)?   -  person Dmytro Pastovenskyi    schedule 10.01.2017
comment
Да, первый столбец можно отсортировать по возрастанию, и это работает правильно   -  person YdB    schedule 10.01.2017
comment
Всего в представлении 10 заголовков столбцов, и каждый из них можно отсортировать.   -  person YdB    schedule 10.01.2017
comment
если первый столбец отсортирован, то второй столбец будет следовать сортировке первого столбца. Попробуйте установить столбец Date как 1-й - он будет работать так, как вы ожидали (скорее всего)   -  person Dmytro Pastovenskyi    schedule 10.01.2017
comment
Все та же проблема, если я устанавливаю заголовок столбца даты как 1-й   -  person YdB    schedule 10.01.2017
comment
Сделайте нам пример и давайте посмотрим базу данных :)   -  person Dmytro Pastovenskyi    schedule 10.01.2017
comment
хорошо, это будет сложно, я думаю, я просто использую эту настройку без проблем   -  person YdB    schedule 10.01.2017
comment
Вы пытались перейти на четвертую вкладку в диалоговом окне свойств столбца и изменить выбор стиля с «Общие» на «Дата»?   -  person Richard Schwartz    schedule 10.01.2017
comment
Являются ли значения во всех документах датами? Или какие-то даты и какие-то строки?   -  person Duston    schedule 10.01.2017
comment
@RichardSchwartz, да, пытался, но все еще не работает.   -  person YdB    schedule 10.01.2017
comment
@Duston And Duston Вы правы, в некоторых документах был текст в качестве даты заказа. Я обновил свой вопрос.   -  person YdB    schedule 10.01.2017
comment
Он сохраняется как текст, потому что, когда вы сохраняете значение из серверной части, вы должны явно указать элементу, что это дата/время. (Нет, не имеет значения, как это определено в форме.) Кажется, вы делаете это, устанавливая свойство DateTimeValue.   -  person Duston    schedule 10.01.2017


Ответы (3)


Проблема заключалась в том, что поле orderdate было установлено серверным агентом, и это поле было задано строкой.

Я знаю, что сохранил текущее время как объект DateTime, и теперь он работает:

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

 docOrder.replaceItemValue("Orderdatum",  timenow);
person YdB    schedule 11.01.2017

Мне непонятно, почему у вас это не работает, но вы можете переборщить с чем-то вроде этого в формуле столбца

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

Кроме того: ваш Java-код сохраняет текстовое значение, потому что метод format() класса SimpleDateFormat возвращает StringBuffer. Метод ReplaceItemValue создает текстовый элемент, когда его входными данными являются String или StringBuffer. Предполагая, что ваша форма определяет OrderDatum как поле Time/Date, вы можете вызвать Document.ComputeWithForm в своем коде, чтобы принудительно преобразовать текстовый элемент в Time/Date. Другой метод - вероятно, предпочтительнее, учитывая потенциальные побочные эффекты вызова ComputeWithForm, - это создать объект DateTime в вашем коде Java и вместо этого передать его методу ReplaceItemValue.

person Richard Schwartz    schedule 10.01.2017

Это потому, что formatterDatumForField.format(currentDateForField) возвращает строку вместо значения даты/времени. Предполагая, что currentDateForField является значением даты/времени, вы должны изменить

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

to

docOrder.replaceItemValue("Orderdatum",currentDateForField);
person JSmart523    schedule 10.01.2017