2009-06-10 5 views
1

Ich arbeite an einer Domino Client-Anwendung, die Dokumente in einem Frameset öffnet.Domino 6.5 - Dokument im Frameset schließen - schließt App

Wenn ich auf die Schaltfläche Speichern klicken, um es hat einige Lotus Script-Validierung, fügt Geschichte Feld und etc dann tut schließlich eine sparen:

Sub Click (Quelle als Schaltfläche) Dim validate1 Als Validation Dim ws As New NotesUIWorkspace Dim s As New Notessession
Dim uidoc Wie NotesUIDocument Dim approverNames As String Dim Workflow1 Als Workflow-
Dim name1 As String Dim names1 As String Dim item1 Als NotesItem Dim history1 Wie Geschichte

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 

End Sub

und dann geht die gesamte Datenbank zu schließen und gibt Benutzer zu Arbeitsbereich.

Ich möchte das Dokument gespeichert haben und dann den Benutzer auf eine bestimmte Seite in der Rahmengruppe zurückgeben.

ich versucht, Code wie folgt zu dem Ereignis Querysave hinzufügen, aber nicht funktioniert:

Sub Queryclose (Quelle Als NotesUIDocument, As Variant weiter) Dim ws As New NotesUIWorkspace
ws.OpenFrameSet ("Mainframe ") ws.SetTargetFrame (" Main ")
ws.OpenPage (" Saved ") End Sub

Alle Ideen, wie ich ein UI-Dokument speichern/schließen kann, die in einem Rahmensatz ist, ohne es das schließen gesamte Datenbank.

Derek

Antwort

1

Gibt es einen bestimmten Grund, warum Sie das Dokument innerhalb eines Rahmens eines Framesets geöffnet haben?
Normalerweise haben Sie ein Frameset für die Gliederung und Ansicht und die Dokumente öffnen sich auf ihrer eigenen Registerkarte/Fenster, auf diese Weise, wenn der Code, den Sie ausgeführt haben, nur das Dokument schließt.

** Update Hat einige Tests und Sie können dies nach dem uidoc.save einzusetzen und entfernen uidoc.close

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

ich vergaß zu erwähnen, sollten Sie den Zielrahmen wieder auf „“ beim Beenden die App, wenn Sie nicht Benutzer Fehler erhalten, wenn andere Apps versuchen, ein Frameset zu öffnen.

+0

Hat einige Tests und Sie können dies nach dem uidoc.save einfügen und uidoc.close Anruf ws.SetTargetFrame („Ihr Frame-Namen hier“) Anruf ws.ComposeDocument („“, „“, "entfernen Sie Ihre form name hier ",,, False) – Carlos

+0

Ich wurde gebeten, das Dokument in den Rahmen zu legen, da die Benutzer verwirrt wurden, weil mehrere Dokumente geöffnet waren ...Ich erzählte ihnen, dass es ein Trainingsproblem ist und so funktioniert Mail ... aber sie wollten es nicht hören ..... – Derek

0

Es sollte gut funktionieren, wenn Sie nur ein uidoc.close Veranstaltung sind anstelle der beiden Sie zeigen haben.

Stellen Sie außerdem sicher, dass keines der Formularereignisse PostSave/PostClose oder QuerySave/QueryClose ein Schließereignis aufruft.