0

一番上にボタンがあるビューがありますDelete

選択したすべてのドキュメントをビューから削除したい。このために私は使用しました:

Dim session As New NotesSession
Dim workspace As New NotesUIWorkspace
Dim database As NotesDatabase
Dim documentCollection As NotesDocumentCollection

Set database=session.CurrentDatabase
Set documentCollection=database.UnprocessedDocuments


If documentCollection.Count=0 Then
    Msgbox "No documents selected ",,"warning"
Else 

    userChoice=Msgbox ("Delete" & Cstr(documentCollection.Count) & " documents?",64+100, _
    "Confirm...")   

If userChoice=6 Then
    Call documentCollection.RemoveAll(True)
            Call workspace.ViewRefresh
End if

しかし、ドキュメント内のテキスト フィールドのValue = YES場所を示す一部のドキュメント (選択したすべてのドキュメントから、ビューから) のみを削除したい場合はどうすればよいでしょうか?Value

私は宣言しようとしました:

    Dim ui As NotesUIDocument
    Dim doc As NotesDocument
    Set doc=ui.document

しかし、次のメッセージが表示されますObject variable not set。つまり、NotesDocumentCollection を使用して文書を参照する必要があるのでしょうか? どのように?

御時間ありがとうございます!

4

2 に答える 2

3

あなたのエラーメッセージはあなたの質問とは何の関係もありません...エラーメッセージは、ドキュメントを初期化されたuidocから設定することから来ています。コードのどこかにa が必要Set ui = ws.CurrentDocumentで、もちろん ws を宣言する必要があります。Dim ws as New NotesUIWorkspace

しかし、あなたの質問では、ui- ドキュメントはまったく必要ありません。選択したドキュメントの一部だけを削除するには、コレクションを循環して、条件に一致するドキュメントのみを削除します。

Dim doc as NotesDocument
Dim nextDoc as NotesDocument
Set doc = documentCollection.GetFirstDocument()
While not doc is Nothing
  Set nextDoc = documentCollection.GetNextDocument(doc)
  if doc.GetItemValue( "Value" )(0) = "Yes" then
    call doc.Remove(True)
  end if
  Set doc = nextDoc
Wend

または、条件に一致するドキュメントのみを含むようにコレクションを減らしてから、コレクション全体を削除します。

Call documentCollection.FTSearch("[Value] = Yes",0)
Call documentCollection.RemoveAll()

ただし、注意してください: コレクションは FTSearch で削減されます。データベースの FT インデックスの設定によっては、「はい、もちろん」または「はい」を取得する場合もあります -> あまり信頼できません。

于 2013-10-01T09:06:26.047 に答える
1

ドキュメント コレクション内のドキュメントをループ処理してから、個別に処理する必要があります。documentCollection 変数を使用するループの例を次に示します。

Dim doc As NotesDocument
Set doc = documentCollection.GetFirstDocument
While Not(doc Is Nothing)
    ' Do stuff

    ' Get next document
    Set doc = documentCollection.GetNextDocument(doc)
Wend
于 2013-10-01T08:53:39.913 に答える