检查空字符串
我想检查是否有变体是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
的一个变体的“空虚”的检查是:
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
这真的很不错,但如果他实际上通过GetItemValue()加载变体,我仍然会建议他调用HasItem()并在那里处理它。在我的一些旧的脚本库中,我有一个名为GetStringItemValueWithDefault(itemName,defaultValue)的函数,它调用HasItem,并在物品不存在时返回默认值,否则它将调用GetItemValue并返回第0个元素。 –
是的,这是我会做的...... –
不应该是:'CStr(doc.contractId(0))'还是'contractID = doc.contractId'为工作代码? –
我假设他使用with语句来避免指定文档。 –
好的,但是在那种情况下它不会是'.contractId'吗? ;) –