我尝试使用NotesDocumentCollection
(集合)或notesuidocument
问题 - 当我尝试使用NotesDocumentCollection
的基础时,它
工作在文档中创建一个pdf但我无法提取它们...我
看不到
问题 - 当我尝试使用notesuidocument
的基础时:它崩溃了
!!
我想在两种类型的基础上使用相同的代码......
这是我的代码:
Public Sub sauverPdfPiecesJointes
Dim s As NotesSession
Dim db As NotesDatabase
Dim colldoc As NotesDocumentCollection
Dim doc As NotesDocument
Dim resultat As String
Dim monRepertoire As Repertoire
Dim monXml As Xml
Dim fichierExiste As Integer
Dim i As Integer
Dim uidoc As NotesUIDocument
Dim workspace As New NotesUIWorkspace
Dim flagUidoc As Integer
Dim nb As String
Dim vue As NotesView
Set s = New NotesSession()
'initialisation de la variable
totalResultat = ""
Set db = s.CurrentDatabase
dbFilePath = db.FilePath
dbFileName = db.FileName
'initialisation du compteur
i = 0
flagUidoc = 0
'creation du pdf du document
Set uidoc = workspace.CurrentDocument <==== CRASH HERE
Set colldoc = db.UnprocessedDocuments
If (uidoc Is Nothing) Then
'plusieurs documents sont sélectionnés
If (colldoc.Count > 0) Then
Set doc = colldoc.GetFirstDocument
While Not doc Is Nothing
(creation du pdf....) (...)
i = i + 1
Set doc = colldoc.GetNextDocument(doc)
Wend
End If
' l'utilisateur est dans le document
Else
flagUidoc = 1
'si l'utilisateur a fait une modification
Set doc = uidoc.Document
nb = doc.Universalid
Call uidoc.Close(true)
Delete uidoc
Set doc = db.Getdocumentbyunid(nb)
(creation du pdf....) (...)
Set vue = db.Getview(nomVue)
Call vue.Refresh()
End If
答案 0 :(得分:1)
如果您根据此答案发布更多详细信息,我会更新问题。
转到IBM_TECHNICAL_SUPPORT文件夹并找到最新的NSD。
打开它并查找单词FATAL。这将为您提供崩溃堆栈。将其添加到您的问题中,它将提供更多详细信息。
为了更详细地了解,有一个wiki article解释了如何确定崩溃代码(尽管你指向它,但前端类不会表现出你对它们的期望)。
至于NotesUIWorkspace。早期版本的Notes中存在问题(我认为是R8.0,或者可能是R7)。问题是如果您打开Notes客户端但在执行代码之前没有打开数据库,则NotesUIWorkspace将不会完全初始化。这是一个边缘案例,所以并不明显。
在触摸文档之前,您还可以尝试在NotesUIWorkspace对象上使用其他方法。看它是否也崩溃了。
除此之外,为了使您的代码能够工作,它还需要在前端的上下文中包含文档。因此,如果您没有选择文档或打开文档,那么它应该会失败(但不会崩溃)。
您还可以使用LND tool获取有关崩溃性质的更多详细信息。
答案 1 :(得分:1)
在分析您的代码后,我假设
这种工作的通常模式是看
database.UnprocessedDocuments
视图中的所选文档,如果没有选择文档session.DocumentContext
这样您不需要NotesUIDocument ,并且通过以下代码示例,您只需调用一次pdf创建代码:
Dim session As New NotesSession
Dim db As NotesDatabase
Dim col As NotesDocumentCollection
Dim doc As NotesDocument
Set db = session.CurrentDatabase
Set col = db.UnprocessedDocuments
If col Is Nothing Then
Set doc = session.DocumentContext
Else
Set doc = col.GetFirstDocument
End If
While Not doc Is Nothing
'
' create pdf for doc here ....
'
If col Is Nothing Then
Set doc = nothing
else
Set doc = col.GetNextDocument(doc)
End If
Wend