检查空字符串

问题描述:

我想检查是否有变体是LotusScript代理空的,因为它是逻辑条件的一部分,但是当我尝试运行错误状态检查空字符串

对象变量未设置

关于下面的代码行:

If CStr(contractId(0)) <> "" Then 

我已经试过

If IsNull(CStr(contractId(0))) Then 

但这也行不通。为什么这不工作?

它看起来像您试图使用速记符号来访问名为ContractID的项目,但在某些情况下,itemd不存在于文档中。 (我猜我们没有看到实际的文档参考,因为您使用的是with声明。)

尝试访问ContractID(0)之前,请先调用NotesDocument.hasItem(“ContractID”)。使用IE,

If doc.hasItem("ContractID") then 
    If CStr(contractId(0)) <> "" Then 
+0

不应该是:'CStr(doc.contractId(0))'还是'contractID = doc.contractId'为工作代码? –

+0

我假设他使用with语句来避免指定文档。 –

+0

好的,但是在那种情况下它不会是'.contractId'吗? ;) –

的一个变体的“空虚”的检查是:

If Not IsEmpty(contractID) then 
    '- do your stuff 
End If 

如果您填写contractID使用GetItemValue(),那么你必须写自己的isEmpty版本,如果所有元素都是空字符串,则认为变体是空的。下面的函数检查变量是否真的是空的,甚至可以用作字符串作为输入。

Function IsVariantEmpty (varValues As Variant) As Boolean 
    IsVariantEmpty = True 

    If Isempty (varValues) Then 
     Exit Function 
    End If 

    If Isscalar (varValues) Then 
     If Trim$ (Cstr (varValues)) <> "" Then 
      IsVariantEmpty = False 
     End If 
     Exit Function 
    End If 

    Forall value In varValues 
     If Trim$ (Cstr (value)) <> "" Then 
      IsVariantEmpty = False 
      Exit Function 
     End If 
    End Forall 
End Function 
+1

这真的很不错,但如果他实际上通过GetItemValue()加载变体,我仍然会建议他调用HasItem()并在那里处理它。在我的一些旧的脚本库中,我有一个名为GetStringItemValueWithDefault(itemName,defaultValue)的函数,它调用HasItem,并在物品不存在时返回默认值,否则它将调用GetItemValue并返回第0个元素。 –

+0

是的,这是我会做的...... –