(Domino Notes)未设置对象变量

Ari*_*iel 0 lotus-notes lotusscript button

我在 Notes 文档上有一个操作按钮。

\n

我点击按钮后,会显示一条错误消息。我怎么解决这个问题?

\n

以下是错误消息和代码:

\n

[错误信息]

\n

未设置对象变量。

\n

[代码]

\n
Sub Click(Source As Button)\n    Dim ws As New NotesUIWorkspace\n    Dim uipr As NotesUIDocument\n    Set uipr = ws.CurrentDocument\n    If username(0) <> uipr.fieldgettext("PUR_DEPT_S01") And username(0) <> "SYSADMIN" Then\n        Dim i As Integer\n        Dim myflag As Variant\n        myflag = False\n        For i = 0 To Ubound(userrole)\n            If userrole(i) = "[DO_ALL_ACTION]" Then\n                myflag = True\n            End If\n        Next            \n        If myflag = False Then\n            Messagebox "ERROR"\n            Exit Sub\n        End If \n    End If\n    \n    If  uipr.fieldgettext("PR_STATUS") <> "purchasing" Then\n        Messagebox "PLEASE CHECK THE STATUS"\n        Exit Sub\n    Else\n        Dim askme As Variant\n        askme = ws.Prompt(PROMPT_YESNO, "CLOSE", "Sure to return the division\xef\xbc\x9f", "", "")    \n        If askme = False Then Exit Sub\n        If uipr.EditMode = False Then uipr.EditMode = True\n    End If\n    Call ChangeField\n    Msgbox "Change OK"\n    uipr.Save\n    uipr.Close\nEnd Sub\nSub ChangeField\n    Dim DayNum As Integer\n    DayNum=ComputeDayDiff(uipr.fieldgettext("REF_DATE"),TW_sys_date)\n    Call uipr.fieldsettext("PR_STATUS","Divsion")\n    Call uipr.fieldsettext("NEXT_PERSON","Division")\n    Call uipr.fieldsettext("PUR_DEPT_S01","")\n    Call uipr.fieldsettext("TPAY_DEPT_S01","")\n    Call uipr.fieldsettext("BUYER","")\nEnd Sub\n
Run Code Online (Sandbox Code Playgroud)\n

Tor*_*ink 5

通过添加错误处理程序,您可以解决 LotusScript(以及许多其他编程语言)中的每个问题。

每个子函数和函数的第一行和最后一行应该类似于:

'- Very first error line
On Error Goto ErrorHandler

...YOUR CODE GOES HERE...

EndOfRoutine:
  Exit Sub 'or Exit Function or Exit Property, depending on where you are
ErrorHandler:
'- print error message in status bar or log.nsf on server
  Print Err & ", " & Error & " in line " & Erl & " in procedure " & GetThreadInfo( LSI_THREAD_PROC )
' or show it to user
  MsgBox Err & ", " & Error & " in line " & Erl & " in procedure " & GetThreadInfo( LSI_THREAD_PROC )
  Resume EndOfRoutine
Run Code Online (Sandbox Code Playgroud)

每当您现在运行代码时,它都会准确地告诉您错误发生在哪一行。从那里您可能可以推断出哪个对象变量未设置。该错误通常意味着变量(通常是 NotesXXX 类之一)未分配值。

我不会通读你的代码来猜测它可能是哪个变量。添加错误处理并自行查找,以免下次发生错误时束手无策。

这里又是破碎的记录(我一遍又一遍地写它):
永远不要在没有错误处理程序的情况下编写一行代码。