Lotus notes 将文本添加到notes文档字段时对象变量未设置问题

Lotus notes 将文本添加到notes文档字段时对象变量未设置问题,lotus-notes,lotus-domino,lotusscript,lotus,Lotus Notes,Lotus Domino,Lotusscript,Lotus,我确实创建了一个新表单,其中有一个表,有两列 此表的最后一行是状态 我想这样做:当我的Notes代理运行时,它将通过几个动作步骤。如果完成了其中一个步骤,它应该将此操作的结果添加到我定义的单元格中 大概是这样的: ---------------------------------------- | First action was done successfully. | | Second action was done successfully. | | Third action was d

我确实创建了一个新表单,其中有一个表,有两列

此表的最后一行是
状态

我想这样做:当我的Notes代理运行时,它将通过几个动作步骤。如果完成了其中一个步骤,它应该将此操作的结果添加到我定义的单元格中

大概是这样的:

----------------------------------------
| First action was done successfully.  |
| Second action was done successfully. |
| Third action was done successfully.  |
----------------------------------------
我尝试了以下代码:

Sub Initialize
    Dim sess As NotesSession    
    Dim db As NotesDatabase
    Dim doc As NotesDocument    
    Dim item As NotesItem

    Set db = sess.CurrentDatabase    
    Set doc = db.GetDocumentById("100B")

    'do some code stuff.....

    Set item = doc.AppendItemValue( "field_Status", "First action was done successfully." & Chr(13) )
    Call doc.Save( False, True )

    'do some code stuff.....

    Set item = doc.AppendItemValue( "field_Status", "Second action was done successfully." )
    Call doc.Save( False, True )
End Sub
不幸的是,我总是收到这样的信息:

未设置对象变量


我不确定遗漏了什么,这是否是用代码实现我想法的正确方法。我希望你能给我一个想法/提示。谢谢。

首先:不要在没有错误处理程序的情况下编写一行代码。 也就是说:最简单的错误处理程序是

On Error Goto ErrorHandler

...your complete code goes here

EndOfRoutine:
  Exit Sub
ErrorHandler:
  Messagebox Err & "," & Error & " in line " & Erl
  Resume EndOfRoutine
这将为您提供以下错误行:

Set db = sess.CurrentDatabase  
但是等等:哪个对象变量没有设置

它的“sess”,正如你所写的:

Dim sess as NotesSession
已分配,但未设置。。。您需要:

Dim sess as New NotesSession
或者,如果您想保留您的线路,则在分配db之前:

Set sess = New NotesSession

附加建议:通过NoteID查找文档不是一个好主意,而硬编码则更糟:NoteID在不同副本中发生变化。同一文档在数据库的另一个副本(例如本地副本或群集中)中将具有不同的NoteId。如果有人删除该文档并重新创建它,那么您需要更新代码。使用排序视图和GetDocumentByKey以及在文档或概要文件文档中设置的特定键来存储此信息。或者至少使用DocumentUniqueId,因为每个副本中的DocumentUniqueId都是相同的(尽管重新创建的问题保持不变)

首先:不要在没有错误处理程序的情况下编写一行代码。 也就是说:最简单的错误处理程序是

On Error Goto ErrorHandler

...your complete code goes here

EndOfRoutine:
  Exit Sub
ErrorHandler:
  Messagebox Err & "," & Error & " in line " & Erl
  Resume EndOfRoutine
这将为您提供以下错误行:

Set db = sess.CurrentDatabase  
但是等等:哪个对象变量没有设置

它的“sess”,正如你所写的:

Dim sess as NotesSession
已分配,但未设置。。。您需要:

Dim sess as New NotesSession
或者,如果您想保留您的线路,则在分配db之前:

Set sess = New NotesSession

附加建议:通过NoteID查找文档不是一个好主意,而硬编码则更糟:NoteID在不同副本中发生变化。同一文档在数据库的另一个副本(例如本地副本或群集中)中将具有不同的NoteId。如果有人删除该文档并重新创建它,那么您需要更新代码。使用排序视图和GetDocumentByKey以及在文档或概要文件文档中设置的特定键来存储此信息。或者至少使用DocumentUniqueId,因为每个复制品都是相同的(尽管娱乐问题保持不变)

Torsten,非常感谢您如此简单易懂的回答。也谢谢你的建议,我会小心的。托尔斯滕,简短的问题,我可以在javascript上结合使用DocumentUniqueId和命令
runOnServer(String noteID)
?如果你能在这里检查我的问题,并提供更多细节,我将非常高兴:托尔斯滕,非常感谢你如此简单易懂的回答。也谢谢你的建议,我会小心的。托尔斯滕,简短的问题,我可以在javascript上结合使用DocumentUniqueId和命令
runOnServer(String noteID)
?如果您能在此处查看我的问题,并提供更多详细信息,我将非常高兴: