มุมมองการเรียงลำดับ Lotus ในวันที่สั่งซื้อทำงานไม่ถูกต้อง

ฉันได้สร้างมุมมองที่ฉันยังมีคอลัมน์ที่เก็บวันที่ด้วย คอลัมน์นี้สามารถจัดเรียงจากน้อยไปหามากและจากมากไปน้อย นี่คือค่าคุณสมบัติคอลัมน์ของฉัน:

ป้อนคำอธิบายรูปภาพที่นี่

แต่ปัญหาคือมุมมองไม่เรียงลำดับวันที่อย่างถูกต้อง:

ป้อนคำอธิบายรูปภาพที่นี่

และนี่คือภาพหน้าจอของช่องวันที่สั่งซื้อ:

ป้อนคำอธิบายรูปภาพที่นี่

และนี่คือภาพหน้าจอของเอกสารที่มีวันที่สั่งซื้อซึ่งไม่อยู่ในลำดับในมุมมอง:

ป้อนคำอธิบายรูปภาพที่นี่

อัปเดต

เอกสารบางฉบับมีวันที่สั่งซื้อเป็นข้อความแทนที่จะเป็นวันที่... ฉันสร้างเอกสารเหล่านี้ผ่านตัวแทนจาวา ฟิลด์ 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-2559)   -  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
ถ้าคอลัมน์แรกถูกจัดเรียง คอลัมน์ที่สองจะเป็นไปตามการเรียงลำดับของคอลัมน์แรก ลองตั้งค่าคอลัมน์วันที่เป็นที่ 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 เมธอด RefplaceItemValue จะสร้างรายการข้อความเมื่ออินพุตเป็น String หรือ StringBuffer สมมติว่าแบบฟอร์มของคุณกำหนด OrderDatum เป็นฟิลด์ Time/Date คุณสามารถเรียก Document.ComputeWithForm ในโค้ดของคุณเพื่อบังคับให้แปลงรายการข้อความเป็นเวลา/วันที่ได้ วิธีอื่น - น่าจะดีกว่าเนื่องจากผลข้างเคียงที่อาจเกิดขึ้นจากการเรียก ComputeWithForm คือการสร้างออบเจ็กต์ DateTime ในโค้ด Java ของคุณแล้วส่งต่อไปยังเมธอด RefplaceItemValue แทน

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