Q. *_*sse 2 lotus-notes lotusscript lotus-domino
我是 LotusScript 的初学者,我的代理中出现以下错误:
我的目标是能够使用以下代码连接到服务器:
Option Public
Option Declare
Sub Initialize
Dim myServer As String
Dim myMailfile As String
myServer = "server"
myMailfile = "mailfile"
Dim filePath As String
Dim intErgebnis As Integer
Dim objNotes As Object
Dim LNdb As Object
Dim LNView As Object
Dim LNDoc As Object
Dim LNItem As Object
Dim strSubject As String
Dim LNWorkspace As Object
Dim LNAttachment As Variant
intErgebnis = 0
Set objNotes = GetObject("", "Notes.NotesSession")
Set LNdb = objNotes.GETDATABASE(myServer, myMailfile)
Set LNWorkspace = CreateObject("notes.notesuiworkspace")
LNWorkspace.OpenDatabase myServer, myMailfile
End Sub
Run Code Online (Sandbox Code Playgroud)
有谁知道如何解决这个问题?感谢您的帮助
Lotusscript 中没有名为 Object 的数据类型。您需要使用适当的对象类型声明这些变量,例如 NotesDatabase、NotesView、NotesDocument 等。
此外,您应该声明并初始化 NotesSession 对象,而不是在 Lotusscript 中使用 GetObject()。看起来您正在尝试编写 COM 代码,而不是 Lotusscript。
另一个建议是使用符合事实上(既定)命名约定的变量名称。如果您查看其他 Lotusscript 代码,您会注意到变量通常以相同的方式命名,从而更容易阅读其他开发人员的代码。另一个建议是首先声明所有 Notes 对象/类,按照它们的使用顺序分组/排序,然后是其余变量,然后再为它们中的任何一个赋值。
您的代码应该更像这样:
Sub Initialize
Dim session As New NotesSession
Dim db As NotesDatabase
Dim view As NotesView
Dim doc As NotesDocument
Dim item As NotesItem
Dim ws As New NotesUIWorkspace
Dim uidoc as NotesUIDocument
Dim mailServer As String
Dim mailFileName As String
Dim filePath As String
Dim resultCount As Integer
Dim subject As String
mailServer = "server"
mailFileName = "mailfile.nsf"
resultCount = 0
' *** Open the specified mail file using back-end classes
Set db = new NotesDatabase(mailServer, mailFileName)
' *** Get the document currently open in the Notes client using front-end classes
Set uidoc = ws.CurrentDocument
End Sub
Run Code Online (Sandbox Code Playgroud)
你会看到这本书读起来容易得多,更不用说它既简短又有效。
我还建议始终使用英文变量名。如果您需要向某人寻求帮助,例如在 Stack Overflow 上,如果您使用易于理解的变量名称,他们会更容易理解您的代码。这也是您应该为 Notes 对象/类使用标准化名称的原因。
我写了一系列关于如何编写更好的 Lotusscript 代码的文章,我认为它们可能对您有所帮助:http : //blog.texasswede.com/how-to-write-better-code-in-notesdomino/