我想访问Lotus Notes数据库并从其中的文档中获取附件。 我可以打开数据库和doc并遍历所有项目。 问题是,我不能将这些项目用作NotesRichTextItem,因此不检查是否有任何item.EmbeddedObject。 我想这是项目声明的问题。 一般来说:如果我使用VS2010进行调试,doc和数据库以及NotesSession都有“value”系统.__ ComObject和“type”是它应该是Domino.Notes对象。 例如观察文件:
Name VALUE TYPE
doc {System.__ComObject} Domino.NotesDocument
但如果我使用doc.GetType()命令,则结果为
doc.GetType() = {Name = "__ComObject" FullName = "System.__ComObject"}
由于我不知道我的doc.item是否是一个NotesRichTextItem,我将其定义为一个对象,并希望事后检查是否为type。我不能,因为函数的返回值也如上所述。 这是我目前使用的完整代码,我从COM部分加载了Lotus Domino引用。
Public Sub OpenDocumentLN()
Try
Dim ns As New Domino.NotesSession
Dim db As Domino.NotesDatabase
Dim doc As Domino.NotesDocument
Dim view As Domino.NotesView
If Not (ns Is Nothing) Then
ns.Initialize()
db = ns.GetDatabase("", sLotusNotesPath & sLotusNotesDB, False)
If Not (db Is Nothing) Then
view = db.GetView(sLotusView)
doc = view.GetFirstDocument
While Not doc Is Nothing
Dim lnNextDoc As Domino.NotesDocument = view.GetNextDocument(doc)
For Each item As Domino.NotesItem In doc.Items
Dim rtItem As Object = doc.GetFirstItem(item.Name)
If rtItem Is Nothing Then Continue For
If Not rtItem.GetType() = GetType(Domino.NotesRichTextItem) Then Continue For
' NEVER reach this part of the code since the IF clause prevents it due to the type problem
If rtItem.EmbeddedObjects Is Nothing Then Continue For
For Each o As Domino.NotesEmbeddedObject In rtItem.EmbeddedObjects
o.ExtractFile(sLotusExportPath & o.Source)
Next
Next
doc = lnNextDoc
End While
End If
db = Nothing
ns = Nothing
End If
Catch ex As Exception
End Try
End Sub
如何将我的rtitem用作NotesRichTextItem,以便我可以处理它?为什么所有对象都被处理为ComObjects?