2009-06-10 7 views
1

Je travaille sur une application client Domino qui ouvre les documents dans un jeu de cadres.Domino 6.5 - ferme le document dans le jeu de cadres - ferme l'application

Lorsque je clique sur le bouton d'enregistrement, il fait une validation de script de lotus, ajoute au champ de l'histoire et etc, puis fait enfin une sauvegarde:

Sub Cliquez (Source Comme Button) Dim validate1 Comme validation Dim ws en tant que nouveau NotesUIWorkspace Dim de As New NotesSession
Dim uidoc Comme NotesUIDocument Dim approverNames As String Dim Workflow1 Comme workflow
Dim nom1 As String Dim names1 As String Dim item1 Comme NotesChamp Dim histoire1 Comme Histoire

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

et procède ensuite à fermer la base de données complète et retourne utilisateur à l'espace de travail.

Ce que je veux, c'est que le document soit sauvegardé, puis que l'utilisateur retourne à une page spécifiée dans le jeu de cadres.

Je tenté d'ajouter un code comme celui-ci à l'événement QuerySave, mais ne fonctionne pas:

Sous QueryClose (Source Comme NotesUIDocument, Continuer comme variante) Dim ws en tant que nouveau NotesUIWorkspace
ws.OpenFrameSet ("MainFrame ") ws.SetTargetFrame (" Main ")
ws.OpenPage (" Saved ") End Sub

Toutes les idées sur la façon dont je peux sauvegarder/fermer un document d'interface utilisateur qui est dans un jeu de cadre sans elle fermer la base de données entière.

Derek

Répondre

1

Une raison spécifique pour laquelle le document est ouvert dans une image d'un jeu de cadres?
Habituellement, vous avez un jeu de cadres pour le contour et la vue et les documents ouverts sur leur propre onglet/fenêtre, de cette façon lorsque le code que vous avez exécuté ne ferme que le doc.

** Mise à jour plus fait quelques tests et vous pouvez insérer cette après la uidoc.save et enlever uidoc.close

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

j'oublié de mentionner que vous devez définir le cadre cible de retour à « » lors de la sortie l'application, si vous ne le faites pas les utilisateurs peuvent obtenir une erreur lorsque d'autres applications tentent d'ouvrir un jeu de cadres.

+0

fait quelques tests plus et vous pouvez insérer cette après la uidoc.save et de supprimer uidoc.close Appel ws.SetTargetFrame (« nom de votre cadre ici ») Appel ws.ComposeDocument (« », « », "votre nom de formulaire ici ",, False) – Carlos

+0

On m'a demandé de mettre le document dans le cadre parce que les utilisateurs devenaient confus en ayant plusieurs documents ouverts ...J'ai continué à leur dire que c'est un problème de formation et c'est comme ça que le Mail fonctionne ... mais ils ne voulaient pas l'entendre ... – Derek

0

Il devrait fonctionner correctement si vous incluez un seul événement uidoc.close au lieu des deux que vous avez montrer.

Vérifiez également qu'aucun des événements Form PostSave/PostClose ou QuerySave/QueryClose n'appelle un événement de fermeture.

Questions connexes