Variables SSIS中For循环容器的EvalExpression中使用布尔数据类型的变量

Variables SSIS中For循环容器的EvalExpression中使用布尔数据类型的变量,variables,for-loop,ssis,boolean,Variables,For Loop,Ssis,Boolean,我在For循环容器中设置了一个数据流任务。只要变量@LastPayment不是正数,就应该执行循环 @LastPayment是一个数据类型的变量:Boolean,Value=False,EvaluatesExpression=False,并在表达式中设置以下值 “从[DW_测试].[dbo].[Test]中选择[Continue]。” 在For循环编辑器中,我的EvalExpression设置为: @[LastPayment]=“1” 当我运行SSIS包时,循环不会停止,即使从[DW_Test]

我在For循环容器中设置了一个数据流任务。只要变量@LastPayment不是正数,就应该执行循环

@LastPayment是一个数据类型的变量:Boolean,Value=False,EvaluatesExpression=False,并在表达式中设置以下值 “从[DW_测试].[dbo].[Test]中选择[Continue]。”

在For循环编辑器中,我的EvalExpression设置为: @[LastPayment]=“1”

当我运行SSIS包时,循环不会停止,即使从[DW_Test].[dbo].[Test]中选择[Continue]在几次迭代后返回0,因此@[LastPayment]=“1”在几次迭代后为FALSE。我不明白为什么ForLoop没有结束

当我将EvalExpression更改为In-my For Loop Editor时 @[LastPayment]=(DT_BOOL)“TRUE”或@[LastPayment]=“TRUE”,我得到了相同的结果

当我将EvalExpression更改为In-my For Loop Editor时,@[LastPayment]=“0” 不生成任何行


我的变量定义或EvalExpression中是否有错误?感谢您对这方面的任何建议。谢谢。

如果要检查For循环中的逻辑表达式,则应将其写入
@LastPaymentSSIS布尔值的计算结果与SQL Server位不同。测试布尔变量是否为真的方法如下:

@[LastPayment] == true

只是更新一下,我已经解决了这个问题

在ForLoop进程之前,我添加了一个executesql任务来确定ForLoop进程需要执行的MaxLoop,并将结果集映射到数据类型为Int32的变量@MaxLoop

在ForLoop容器中,我添加了一个带有表达式@Loop=@Loop+1的表达式任务@Loop是数据类型为Int32的变量。这是为了计算ForLoop已处理的循环数


我的ForLoop-EvalExpression被修改为@LoopHi-Ferdipux,您是否建议从EvalExpression中删除“[”和“]”?我试过了,但得到了同样的结果。所以这不是问题所在。@JamieLim,回答了您以前版本的问题,在这个问题中,您编写表达式时好像LastPayment是一个实值变量。对于您当前的问题,Tab的答案是正确的。或者您可以简单地使用
@LastPayment
,因为它是布尔类型。