2017-01-24 4 views
0

В IBM примечаниях У меня есть агент Java, который проверяет, если поле дата ActualDelivery пуста или нет:название поля разных типов данных, как проверить, если пустой

String ActualDeliveryDate = orderRegelDocument.getItemValueString("ActualDeliverydate"); 
if (ActualDeliveryDate.equals("") ){ 

Но проблема в том, что это поле ActualDeliverydate является набор в некоторых документах как текстовое поле и в некоторых документах как поле DateTime. Итак, как я могу узнать, когда это текстовое поле, а затем взять строку и когда взять ее как DateTime?

ответ

2

Получите Item вместо значения предмета.

Item theItem orderRegelDocument.getFirstItem("ActualDeliverydate"); 

Затем проверьте элемент Type property и сделать преобразование, если это необходимо:

String ActualDeliveryDate; 
if (theItem.getType() == Item.DATETIMES) 
{ 
DateTime dt = theItem.getDateTimeValue(); 
ActualDeliveryDate = dt.getLocalTime(); 
} 
else 
{ 
ActualDeliveryDate = orderRegelDocument.getItemValueString("ActualDeliverydate"); 
} 
-1

Я не использую IBM Notes, но это должно работать

Object actualDeliveryDate = orderRegelDocument.getItemValue("ActualDeliverydate"); 
if(actualDeliveryDate instanceOf String){ 
    //compare with a string 
}else if(actualDeliveryDate instanceOf Date){ 
    //do something else 
} 

Я не знаю об объекте ACTUEL, которые используются, так что просто отлаживать его, чтобы увидеть его.

+0

getItemValueString() всегда возвращает строку. Используйте 'orderRegelDocument.getItemValue (" ActualDeliverydate "). ElementAt (0)' вместо –

+0

'String' не является' Date' и никогда не будет. – CKing

+0

@KnutHerrmann Могу ли я в конечном итоге сделать actualDeliveryDate instanceOf datetime? – YdB

0

Aditionally, вы можете удалить пустые DateTime и количество полей из документов. В классической разработке Notes простой @If(@Text(@ThisValue) = ""; @DeleteField; @ThisValue) в InputValidation может выполнить эту работу.