Lotus notes 类型不匹配-Lotusscript

Lotus notes 类型不匹配-Lotusscript,lotus-notes,lotusscript,lotus,Lotus Notes,Lotusscript,Lotus,我不知道我哪里错了,但我不断得到“类型不匹配”错误 这是原始代码 Dim policy As New Policy Dim policyDocument As NotesDocument Set policyDocument = p_baseManager.base_policyDocument policy.formName = policyDocument.Getitemvalue("Form")(0) //Had type mismatch erro

我不知道我哪里错了,但我不断得到“类型不匹配”错误

这是原始代码

    Dim policy As New Policy
    Dim policyDocument As NotesDocument

    Set policyDocument = p_baseManager.base_policyDocument
    policy.formName = policyDocument.Getitemvalue("Form")(0)    //Had type mismatch error on this line
    policy.universalId = policyDocument.Universalid
    policy.formX = policyDocument.Getitemvalue("FormX")(0)
我尝试对它进行一些修改,以显示一些值

    Dim policy As New Policy
    Dim policyDocument As NotesDocument

    Set policyDocument = p_baseManager.base_policyDocument
    Print "universal id = " + policyDocument.Universalid
    Print "FORM NAME = " + policy.formName
    policy.formName = "FormName"
    Print "FORM NAME = " + policy.formName
    policy.formName = policyDocument.Getitemvalue("Form")(0)     // still getting type mismatch
    policy.universalId = policyDocument.Universalid
    policy.formX = policyDocument.Getitemvalue("FormX")(0)

谢谢大家!

添加错误处理是找出错误发生位置的最佳方法。类型不匹配将是特定于数据的,因此在没有访问环境的情况下很难进行故障排除。LotusScript中用于错误处理的最佳库是毫无疑问的。

好的,让我们使用“调试”代码来分析它。我们有两个我们一无所知的自定义类:

类名:策略 实例:政策

及 类名:??? 实例:p_baseManager

然后我们有一行抛出错误:

policy.formName = policyDocument.Getitemvalue("Form")(0)
从你的测试线

policy.formName = "FormName"
我们知道,policy.formName接受字符串作为输入,错误行的左侧本身也会抛出错误

现在,如果我们有一个“类型不匹配”,这意味着赋值的右侧部分不返回字符串

如果
p\u baseManager.base\u policyDocument
没有返回有效的NotesDocument,那么我们将在该行中得到一个
对象变量not set
,我们可以得出结论,该policyDocument是一个有效的NotesDocument,而不是
Nothing

现在让我们看看
GetItemValue(“Form”)
:如果文档不包含名为“Form”的项,它将返回一个空字符串:在这种情况下,空字符串仍然是字符串-->没有类型不匹配

唯一的可能性是,
policyDocument.Getitemvalue(“Form”)(0)
不返回字符串,如果项目存在但包含数字或日期值

那么:现在该怎么办

首先:您确定错误在那一行吗(您是否使用了调试器)?
第二:使用调试器查找PolicyDocument的表单项的值

第三:正如Paul Stephen Withers所提到的:使用错误处理来准确识别错误行、错误代码和错误。

p_baseManager不是内置类,而是自定义类。这里没有人可以告诉您,如果p_baseManager.base_policyDocument返回NotesDocument对象并且不是空的。。。没有更多的代码,就不可能有帮助。顺便说一句,策略也是一个自定义类:没有人知道这个类的formName属性需要什么,如果在策略文档的“Form”项中确实有一个字符串(如果需要的话)