1

アクションボタンを「に」変更したので、ユーザーがこのボタンを押すと、Uidoc が保存されます。このドキュメントを削除しないと、すべてのドキュメントがすべてのドキュメント ビューに保存されるという事実を考慮して、このドキュメントを削除したいと思います。

ドキュメントを削除しようとすると (doc.remove を呼び出す)、次のエラー メッセージが表示されます。

また、NotesDocument を閉じたいと思います。私も次のようなことを試しました:

@Command([movetotrash]);
@Command([emptytrash]);
@Command([fileclosewindow]) but it doesn;t work. Thank you, Samir Akhtubir

私もこのように試してみました:

 Sub Queryclose(Source As Notesuidocument, Continue As Variant)
   noteid$ = source.document.NoteID
   Delete source 
   Dim S As New notessession
   Dim db As notesdatabase
   Set db = s. currentdatabase
   Dim doc As Notesdocument
   Set doc = db.GetDocumentbyID(noteid$)
   Call doc.Remove(True)
 End Sub

しかし、作成したばかりのドキュメントにこのコードを挿入すると、すべてのドキュメントが削除されます。次に、「キャンセル」というアクション ボタンの QueryClose に入れましたが、機能しません。

では、現在のドキュメントを削除して、アクション ボタンでウィンドウを閉じるにはどうすればよいでしょうか。

4

1 に答える 1

1
Dim ws As New NotesUIWorkspace
Dim uidoc As NotesUIDocument
Dim doc as NotesDocument

'*** Get currently open document
Set uidoc = ws.CurrentDocument
'*** Save it, so we can later close it
'*** without prompt. You can also set
'*** the field SaveOptions to "0".
Call uidoc.Save()
Call uidoc.FieldSetText("SaveOptions","0")
'*** Get the backend document
Set doc = uidoc.Document
'*** Force closed the UI document
Call uidoc.Close(True)
'*** Delete the backend document
Call doc.Remove(True)

それでもうまくいかない場合は、ドキュメントに削除フラグを設定します。通常は「flagDelete」を使用し、「はい」に設定します。このフィールドが「はい」に設定されているドキュメントを表示しないように、すべてのビューをフィルター処理しています。次に、「flagDelete」が「Yes」に設定されたすべてのドキュメントを 1 時間に 1 回、または 1 日に 1 回 (1 日に処理されるドキュメントの数に応じて) 削除するエージェントをスケジュールします。

この方法には別の利点があります。ACL から削除アクセス権を削除できますが、フラグを設定することにより、ユーザーが特定のドキュメントを「削除」できるようにします。次に、削除アクセス権で実行されているスケジュールされたエージェントによって、ドキュメントが実際に削除されます。もちろん、ビューに基づかない検索やその他のルックアップを実行するコードはすべて、ドキュメントを除外するように変更する必要があります。

于 2012-09-28T15:50:57.967 に答える