2015-04-17 138 views
0

我想檢查是否有變體是LotusScript代理空的,因爲它是邏輯條件的一部分,但是當我嘗試運行錯誤狀態檢查空字符串

對象變量未設置

關於下面的代碼行:

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

我已經試過

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

但這也行不通。爲什麼這不工作?

回答

0

它看起來像您試圖使用速記符號來訪問名爲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'嗎? ;) –

2

的一個變體的「空虛」的檢查是:

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

是的,這是我會做的...... –