ロータススクリプトのeditdocumentを使用して、既存文書のコピーを作成するコードを
書きました。このコードでは文書は一度も保存していません。
Sub Click(Source As Button)
Dim session As New NotesSession
Dim workspace As New NotesUIWorkspace
Dim db As NotesDatabase
Dim uidoc As NotesUIDocument
Dim doc As NotesDocument, doc2 As NotesDocument
Dim item As NotesItem
'// 確認メッセージ
RetVal = Messagebox ( "文書のコピーを作成します。よろしいですか?" ,1+32, "メッセージ" )
If RetVal = 2 Then
Exit Sub
End If
Set uidoc = workspace.CurrentDocument
Set doc = uidoc.Document
Set db = session.CurrentDatabase
Set doc2 = New NotesDocument(db)
doc2.form=doc.form(0)
Set item = doc.GetFirstItem("Readers")
Call item.CopyItemToDocument(doc2, "Readers")
Set item = doc.GetFirstItem("AreaFlg")
Call item.CopyItemToDocument(doc2, "AreaFlg")
Set item = doc.GetFirstItem("GRCode")
Call item.CopyItemToDocument(doc2, "GRCode")
Set item = doc.GetFirstItem("Department")
Call item.CopyItemToDocument(doc2, "Department")
'// 管理番号の自動採番
If AutoManageNo( doc2 , "2" , "E" ) = -1 Then
Exit Sub
End If
Call workspace.editdocument(True, doc2,False )
Set uidoc = workspace.CurrentDocument
uidoc.Refresh
End Sub
ところか、このコードで作成した文書を@Command([FileSave])の仕込んであるボタンで保存したしたとき、
以下の QuerysaveイベントのコードでIsNewDocに引っかからず、処理が走ってしまいます。
If Source.IsNewDoc Or doc.ManageNo(0) = "" Then
Else
---処理----
End If
editdocumentを使って作成した文書は新規文書とみなされないのでしょうか?
あるいは何か間違いがあるのでしょうか?