Question

Dans une boucle Foreach dans SSIS, existe-t-il un moyen de rompre la tâche à la prochaine itération en cas d'échec de la tâche?

Je boucle sur les fichiers xml et effectue une recherche à l'aide des valeurs de ce fichier. Si la recherche ne renvoie aucune valeur, j'aimerais en faire rapport et n'effectue aucune autre tâche pour ce fichier. S'il n'y a pas d'équivalent à une déclaration de rupture, comment peut-on y parvenir autrement?

Était-ce utile?

La solution

Vous pouvez également utiliser une boucle 'pour' avec une condition booléenne telle qu'une boucle alors qu'une variable est égale à true. Ensuite, lorsque vous souhaitez sortir de cette boucle, changez simplement la valeur de cette variable en false et vous sortirez de la boucle.

Pour répondre à votre question ... une boucle foreach, boucle sur une collection et d’autres constructions énumérables tant qu’il existe une boucle à parcourir. Vous pouvez donc trouver une solution de contournement ou simplement utiliser une boucle "for" au lieu d'une boucle "foreach". De cette façon, vous avez plus de contrôle de type programmation sur la boucle car vous définissez l'expression de condition.

Autres conseils

La recherche peut être redirigée si aucune valeur n'est renvoyée, loin du flux réussi.

Vous avez besoin du reste de votre boucle foreach pour savoir qu'il y a eu une erreur. Par conséquent, vous pouvez définir une variable de package en cas d'erreur, juste avant la journalisation.

Ensuite, dans la flèche "succès" après votre recherche, vous pouvez le remplacer par un succès conditionnel, afin qu'il ne soit exécuté que si la valeur de la variable n'est pas la valeur de l'erreur.

J'ai donc eu ce problème et je l'ai résolu en a) dirigeant la tâche échouée vers une tâche fictive qui n'a pas abouti et qui s'est terminée et b) en définissant les 'RÉSULTATS DE CONCEPTION DE FORCE' sur 'SUCCÈS', qui ont abouti exactement comme je le voulais à.

Un autre moyen serait de placer un conteneur de séquence dans votre boucle, puis de placer les étapes conditionnelles dans le conteneur de séquence. Toute décision qui doit être "poursuivie" n'a besoin que de quitter le conteneur de séquence. Très simple à mettre en œuvre avec tout le contrôle souhaité, y compris le recouvrement des erreurs.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top