2015-09-15 1 views
0

J'ai un arbre composé de deux éléments principaux: dossier (conteneurs) et exigences. Un dossier peut contenir à la fois un dossier ou une exigence alors qu'une exigence doit être une feuille. De plus, à la fois le dossier et les exigences a un champ avec le même nom.propagation d'un changement de champ sur les enfants

Maintenant j'essaie d'écrire un VBScript qui, à partir du changement de ce champ dans un dossier père, change le même champ dans TOUS ses enfants à TOUS les niveaux imbriqués. J'ai des problèmes à propager le changement aux niveaux imbriqués.

+0

Cet arbre est une structure de fichiers, une base de données qu'est-ce que c'est? Quoi qu'il en soit, vous devriez pouvoir utiliser [Recursive Technique] (https://en.wikibooks.org/wiki/A-level_Computing/AQA/Problem_Solving,_Programming,_Operating_Systems,_Databases_and_Networking/Programming_Concepts/Recursive_Techniques) pour créer une fonction d'auto-référencement qui itère à travers la structure arborescente et exécute la tâche demandée. – Lankymart

Répondre

0

Effectue l'itération de tous les niveaux imbriqués à l'aide d'une fonction récursive.

Mettez le code suivant dans le script du module de configuration Workflow et modifiez "RQ_USER_01" pour le nom d'un champ que vous devez propager.

Sub Req_FieldChange(FieldName) 
    On Error Resume Next 

    If FieldName = "RQ_USER_01" Then 
    Set ReqFact = TDConnection.ReqFactory 
    FatherId = Req_Fields.Field("RQ_REQ_ID").Value 
    NewValue = Req_Fields.Field("RQ_USER_01").Value 
    ChangeChildrenField ReqFact, FatherId, NewValue 
    End If 

    On Error GoTo 0 
End Sub 

Sub ChangeChildrenField(ReqFact, FatherId, NewValue) 
    Set ReqChildrenList = ReqFact.GetChildrenList(FatherId) 
    For Each ReqChild in ReqChildrenList 
     ReqChild.Field("RQ_USER_01") = NewValue 
     ReqChild.Post() 
     ChangeChildrenField ReqFact, ReqChild.ID, NewValue 
    Next 
End Sub