Lotus notes 无法将文档存档到lotus notes中的存档数据库
有一个代理将文档存档到存档数据库,并将其从当前数据库中删除,但当我运行该代理时,一些文档被存档,存档停止,并出现错误 “存档挂起的请求:4000:第33行:用户定义的错误”Lotus notes 无法将文档存档到lotus notes中的存档数据库,lotus-notes,lotus-domino,lotusscript,lotus-formula,domino-designer-eclipse,Lotus Notes,Lotus Domino,Lotusscript,Lotus Formula,Domino Designer Eclipse,有一个代理将文档存档到存档数据库,并将其从当前数据库中删除,但当我运行该代理时,一些文档被存档,存档停止,并出现错误 “存档挂起的请求:4000:第33行:用户定义的错误” 幸运的是,您的代码有一个错误处理程序。。。因此,我们确切地知道该错误发生在哪一行: Call doc.Save(True, False) 这意味着:无法保存代码所处理的文档 不幸的是,错误号4000是一个通用错误,可能意味着很多事情。 我猜,在您的情况下,文档已经增长到很大(一个字段中的数据超过32k),因此无法保存
幸运的是,您的代码有一个错误处理程序。。。因此,我们确切地知道该错误发生在哪一行:
Call doc.Save(True, False)
这意味着:无法保存代码所处理的文档
不幸的是,错误号4000是一个通用错误,可能意味着很多事情。
我猜,在您的情况下,文档已经增长到很大(一个字段中的数据超过32k),因此无法保存
我会以这种方式修改代码,它会写一个关于无法归档的文档的日志,然后继续处理下一个文档,而不是崩溃。因此,您还需要更改逻辑,因为如果无法保存文档,文档将永远不会从视图中消失:
Dim viwNav as NotesViewNavigator
Dim ve as NotesViewEntry
Set viwNav = Oview.CreateViewNavigator()
Oview.AutoUpdate = False
Set ve = viwNav.GetFirst()
While Not(ve Is Nothing)
Set doc = ve.Document
On Error Goto errorHandlerDoc
Call doc.CopyToDatabase(archdb)
doc.Archived = "True"
Call doc.Save(True, False)
NextDoc:
Set ve = viwNav.GetNext(ve)
Wend
On Error Goto errorHandler
Set Oview2 = Odb.GetView("Archive Requests 2")
Call Oview2.Refresh
Set Ovc = Oview2.AllEntries
Exit Sub
errorHandlerDoc:
Msgbox "Archiving Pending Requests: " + Format$(Err) + " : Line " + Format$(Erl) + " : " + Error$(Err) + " for document " + doc.UniversalId
Resume NextDoc
errorHandler:
'LogAction("Archiving Pending Requests: " + Format$(Err) + " : Line " + Format$(Erl) + " : " + Error$(Err) )
Msgbox "Archiving Pending Requests: " + Format$(Err) + " : Line " + Format$(Erl) + " : " + Error$(Err)
嗨,托斯滕,谢谢你的帮助。我有5000多个文档要归档,但问题是此代码显示了错误文档的通用ID,但它总是要求确认以转到下一个文档。(错误显示为带有“确定”按钮的文档的通用ID)由于文档计数非常高,怎么可能很难始终单击“确定”按钮,你能帮我一下吗?然后用“打印”替换“msgbox”。。。抱歉:但是您真的在不了解LotusScript最简单的基础知识的情况下修改了5000个文档吗?这有点可怕。。。。请确保:您知道您的代码不会从原始数据库中删除文档,而是复制它们,然后简单地将“存档”标志设置为true?我是这项技术的新手,我知道这段代码只是在文档中添加了一个标志,它不会从原始数据库中删除文档。但是当我们运行代理时出现错误时,这段代码会在错误文档处停止,而不会移动到下一个文档,它正在多次复制错误文档,直到我强制停止该过程。请检查我的编辑:使用NotesViewNavigator,不要刷新视图,然后它将工作
Dim viwNav as NotesViewNavigator
Dim ve as NotesViewEntry
Set viwNav = Oview.CreateViewNavigator()
Oview.AutoUpdate = False
Set ve = viwNav.GetFirst()
While Not(ve Is Nothing)
Set doc = ve.Document
On Error Goto errorHandlerDoc
Call doc.CopyToDatabase(archdb)
doc.Archived = "True"
Call doc.Save(True, False)
NextDoc:
Set ve = viwNav.GetNext(ve)
Wend
On Error Goto errorHandler
Set Oview2 = Odb.GetView("Archive Requests 2")
Call Oview2.Refresh
Set Ovc = Oview2.AllEntries
Exit Sub
errorHandlerDoc:
Msgbox "Archiving Pending Requests: " + Format$(Err) + " : Line " + Format$(Erl) + " : " + Error$(Err) + " for document " + doc.UniversalId
Resume NextDoc
errorHandler:
'LogAction("Archiving Pending Requests: " + Format$(Err) + " : Line " + Format$(Erl) + " : " + Error$(Err) )
Msgbox "Archiving Pending Requests: " + Format$(Err) + " : Line " + Format$(Erl) + " : " + Error$(Err)