1

フレームセットでドキュメントを開くDominoクライアントアプリケーションに取り組んでいます。

保存ボタンをクリックすると、ロータススクリプトの検証が行われ、履歴フィールドに追加され、最後に保存が行われます。

Sub Click(Source As Button)Dim validate1 As Validation Dim ws As New NotesUIworkspace Dim s As New NotesSession
Dim uidoc As NotesUIDocument Dim approverNames As String Dim Workflow1 As Workflow
Dim name1 As String Dim names1 As String Dim item1 As NotesItem Dim history1 As History

Set uidoc = ws.CurrentDocument
Call uidoc.refresh  

'===============================================
'Validation
'===============================================
Set validate1 = New Validation()

Call validate1.checkCustomer(uidoc.FieldGetText("Customer"))
Call validate1.checkEndUser(uidoc.FieldGetText("EndUser"))
Call validate1.checkShortProjectDescription(uidoc.FieldGetText("ShortProjectDescription"))
Call validate1.checkProjectName(uidoc.FieldGetText("ProjectName"))
Call validate1.checkProjectLocation(uidoc.FieldGetText("ProjectLocation"))
Call validate1.checkOperationCenter(uidoc.FieldGetText("BusinessUnit"))
Call validate1.checkSalesCenter(uidoc.FieldGetText("SalesCenter"))
Call validate1.checkMarketSegment(uidoc.FieldGetText("MarketSegment"))  
Call validate1.checkSAPDate(uidoc.FieldGetText("SAPDate"))
Call validate1.checkRevision(uidoc.FieldGetText("Revision"))
Call validate1.checkValidityDate(uidoc.FieldGetText("ValidityDate"))
Call validate1.checkDateApproval(uidoc.FieldGetText("DateApproval"))
Call validate1.checkCurrencyUSD(uidoc.FieldGetText("CurrencyUSD"))
Call validate1.checkMargin(uidoc.FieldGetText("Margin"))

If validate1.displayErrorMessages() = 0 Then
'========================================================================
    Call uidoc.FieldSetText("WhoHasApproved","")
    Call uidoc.FieldSetText("ApproversNotified","")     

    Call uidoc.FieldSetText("SubmitDate",Cstr(Now))
    Call uidoc.FieldSetText("Status","In Process")

    'Add calls to workflow here....
    Set workflow1 = New workflow("SAPFCD")

    'Update History Field - Submitted for Processing by
    Set history1 = New History(uidoc.Document)
    Call history1.addTo("Submitted for Processing", uidoc.FieldGetText("CreatedBy"))    
    Set item1 = uidoc.Document.ReplaceItemValue("History" , history1.getDescription())

    'Set ApproverList
    names1 = workflow1.setApproverList(uidoc)
    Call uidoc.FieldSetText("ApproverList",names1)

    uidoc.Refresh

    name1 = workflow1.setNextApprover(uidoc)        
    Call uidoc.FieldSetText("NextApprover", name1)
'========================================================================   

    'Add calls to workflow here....
    Call uidoc.FieldSetText("Status","1st Peer")

    uidoc.Save
    uidoc.Close(True)
    uidoc.Close(True)
End If

サブ終了

次に、データベース全体を閉じて、ユーザーをワークスペースに戻します。

私が欲しいのは、ドキュメントを保存してから、フレームセット内の指定されたページにユーザーを戻すことです。

次のようなコードをQuerySaveイベントに追加しようとしましたが、機能しません。

Sub Queryclose(Source As Notesuidocument、Continue As Variant)Dim ws As New NotesUIworkspace
ws.OpenFrameSet( "MainFrame")ws.SetTargetFrame( "Main")
ws.OpenPage( "Saved")End Sub

データベース全体を閉じることなく、フレームセット内にあるUIドキュメントを保存/閉じる方法に関するアイデア。

デレク

4

2 に答える 2

1

フレームセットのフレーム内でドキュメントを開いている具体的な理由はありますか?
通常、アウトラインとビューのフレームセットがあり、ドキュメントは独自のタブ/ウィンドウで開きます。このように、実行したコードはドキュメントを閉じるだけです。

**更新いくつかのテストを行いました。これをuidoc.saveの後に挿入し、uidoc.closeを削除できます。

Call ws.SetTargetFrame("your frame name here") 
Call ws.ComposeDocument("","","your form name here",,,False)

他のアプリがフレームセットを開こうとしたときにユーザーがエラーを受け取る可能性があるため、アプリを終了するときにターゲットフレームを「」に戻す必要があることを忘れました。

于 2009-06-11T13:38:24.863 に答える
0

表示している2つではなく1つのuidoc.closeイベントのみを含めると、正常に機能するはずです。

また、FormイベントのPostSave/PostCloseまたはQuerySave/QueryCloseのいずれもcloseイベントを呼び出さないようにしてください。

于 2009-06-10T21:24:14.813 に答える