如何动态更改Foreach循环递归属性

时间:2018-10-03 08:00:59

标签: visual-studio ssis etl data-warehouse

我在项目中工作,有时我需要遍历子文件夹,有些时候我不需要。为了达到目标,我想使用单个Foreach循环并动态更改其属性 Traverse子文件夹 是否有任何解决方案可通过SSIS任务表达式,VB或C#代码或任何其他方式动态更改属性? 请帮忙。

enter image description here

2 个答案:

答案 0 :(得分:1)

您是否考虑过拥有Foreach循环的两个副本,一个副本已选中遍历子文件夹,另一个副本未选中此属性,然后使用带有参数的优先约束来确定要执行哪个?每个Foreach循环都可以连接到示例中的前面的Execute SQL Task上,并且每个循环都具有优先级约束,每个约束都包含一个表达式,该表达式检查参数以确定要使用的Foreach循环。下面的示例是有关使用布尔参数的优先约束的表达式。这将在遍历子文件夹的Foreach循环上进行,并且对其他(非递归)Foreach循环也同样适用,只需将参数设置为false即可。

@[$Package::TraverseSubFolders] == True

答案 1 :(得分:1)

在foreach循环Collection属性中的表达式下,您位于一个叫做“递归”的变量之后。

enter image description here

创建一个布尔变量,然后将该变量分配给“ Recurse”属性。 您可能必须在foreach循环上将延迟验证属性设置为true。

然后在运行时翻转该变量以使用脚本任务更改其行为,或者可以使用存储过程的结果来完成该操作。