首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将文档从视图复制到其他数据库并删除它

将文档从视图复制到其他数据库并删除它
EN

Stack Overflow用户
提问于 2015-11-25 10:22:45
回答 2查看 2K关注 0票数 2

我希望将文档从数据库中的视图转移到其他数据库中的其他视图,因此必须复制然后删除文档,因为notesdocument拥有的唯一选项是复制数据库。

所以我有个密码:

代码语言:javascript
复制
Option Public
Option Declare

Sub Initialize()

Dim session As New NotesSession
Dim db As NotesDatabase
Set db = session.CurrentDatabase
Dim dbB As New NotesDatabase(db.Server,"Desarrollo\Formular_CL02.nsf")
Dim vwA As NotesView
Dim vwB As NotesView
Dim docA As NotesDocument
Dim docB As NotesDocument

'Open the database
If Not (dbB.isopen) Then
    Call dbB.open(db.Server,"Desarrollo\Formular_CL02.nsf")
End If

'Get the views
Set vwA = db.getView( "TestDevelop" )
Set vwB = dbB.getView( "TestDevelop" )

Set docA = vwA.GetFirstDocument 
Do While Not( docA Is Nothing )
    If docB Is Nothing Then
        Call docA.CopyToDatabase(dbB)
        Call docA.Remove(True)
    End If
    Set docA = vwA.GetNextDocument(docA) 
Loop

End Sub

当我在最后执行代理时,它会显示一个错误:

代码语言:javascript
复制
Function requires a valid ADT argument

如果删除有关调用docA.Remove(True)的行,则代理将无错误地复制所有文档。

有什么建议吗?

非常感谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-11-25 10:57:47

如果删除docA,则无法获得下一个文档。

只需使用另一个"docNext“来保存这些信息:

代码语言:javascript
复制
Dim docNext as NotesDocument

Set docA = vwA.GetFirstDocument 
Do While Not( docA Is Nothing )
    Set docNext = vwA.GetNextDocument(docA) 

    If docB Is Nothing Then
        Call docA.CopyToDatabase(dbB)
        Call docA.Remove(True)
    End If
    Set docA = docNext
Loop

此外,在代码中始终有一个错误处理程序以获得有关错误的最小信息是一个很好的实践:

第一行代码(直接在末尾子行之前):

代码语言:javascript
复制
On Error Goto ErrorHandler

“守则”末尾:

代码语言:javascript
复制
EndSub:
  Exit Sub
ErrorHandler: 
  Print Err & ", " & Error & " in line " & erl
  Resume EndSub

你可以用一个消息盒代替“打印”,或者发送电子邮件/写日志文档,什么都可以。但至少你知道错误号,错误文本和错误行.

票数 4
EN

Stack Overflow用户

发布于 2015-11-25 10:58:38

错误发生在行Set docA = vwA.GetNextDocument(docA)中,因为您已经删除了docA,并且不能再将它用作参数。

将代码更改为:

代码语言:javascript
复制
Do While Not( docA Is Nothing )
    Set docTemp = vwA.GetNextDocument(docA) 
    Call docA.CopyToDatabase(dbB)
    Call docA.Remove(True)
    Set docA = docTemp  
Loop
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33913917

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档