Class 或未找到类型名称 - 类型对象
Class or type name not found - type Object
我是 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
有人知道如何解决这个问题吗?感谢您的帮助
Lotusscript 中没有名为 Object 的数据类型。
您需要使用适当的对象类型声明这些变量,例如NotesDatabase、NotesView、NotesDocument 等
此外,您应该声明并初始化 NotesSession 对象,而不是在 Lotusscript 中使用 GetObject()。看来您正在尝试编写 COM 代码,而不是 Lotusscript。
另一个建议是使用符合事实上(既定)命名约定的变量名。如果您查看其他 Lotusscript 代码,您会注意到变量通常以相同的方式命名,这使得阅读其他开发人员的代码变得更加容易。另一个建议是首先声明所有注释 objects/classes,grouped/sorted 按照它们的使用顺序,然后是其余变量,然后再为它们中的任何一个赋值。
您的代码应该更像这样:
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
你看这读起来有多容易,更不用说它更短 和 工作。
我还建议始终使用英文变量名。如果您需要向某人寻求帮助,例如在 Stack Overflow 上,如果您使用易于理解的变量名称,他们将更容易理解您的代码。这也是为什么你应该为 Notes 使用标准化名称的原因 objects/classes.
我写了一系列关于如何编写更好的 Lotusscript 代码的文章,我认为它们可能对您有所帮助:http://blog.texasswede.com/how-to-write-better-code-in-notesdomino/
我是 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
有人知道如何解决这个问题吗?感谢您的帮助
Lotusscript 中没有名为 Object 的数据类型。 您需要使用适当的对象类型声明这些变量,例如NotesDatabase、NotesView、NotesDocument 等
此外,您应该声明并初始化 NotesSession 对象,而不是在 Lotusscript 中使用 GetObject()。看来您正在尝试编写 COM 代码,而不是 Lotusscript。
另一个建议是使用符合事实上(既定)命名约定的变量名。如果您查看其他 Lotusscript 代码,您会注意到变量通常以相同的方式命名,这使得阅读其他开发人员的代码变得更加容易。另一个建议是首先声明所有注释 objects/classes,grouped/sorted 按照它们的使用顺序,然后是其余变量,然后再为它们中的任何一个赋值。
您的代码应该更像这样:
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
你看这读起来有多容易,更不用说它更短 和 工作。
我还建议始终使用英文变量名。如果您需要向某人寻求帮助,例如在 Stack Overflow 上,如果您使用易于理解的变量名称,他们将更容易理解您的代码。这也是为什么你应该为 Notes 使用标准化名称的原因 objects/classes.
我写了一系列关于如何编写更好的 Lotusscript 代码的文章,我认为它们可能对您有所帮助:http://blog.texasswede.com/how-to-write-better-code-in-notesdomino/