相同字段名不同数据类型如何判断是否为空

Same field name different data types how to check if empty

在 IBM 笔记中,我有一个 Java 代理,它检查字段 ActualDelivery 日期是否为空:

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

但问题是这个字段 ActualDeliverydate 在一些文档中被设置为文本字段,在一些文档中被设置为日期时间字段。所以我怎么知道它什么时候是文本字段然后取字符串以及什么时候将其作为日期时间?

我不使用 IBM 笔记,但这应该可以

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

我不知道使用的actuel对象,所以调试一下看看吧。

获取 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");
}

另外,您可以从文档中删除空的 DateTime 和 Number 字段。在经典的 Notes 开发中,一个简单的 @If(@Text(@ThisValue) = ""; @DeleteField; @ThisValue) in InputValidation 就可以完成这项工作。