【问题标题】:ssis error : foreach in foreach loop containerssis 错误:foreach 循环容器中的 foreach
【发布时间】:2015-05-19 14:49:19
【问题描述】:

感谢您回答问题。

我检查变量是否包含null,但这不是null的原因。

今天,我找出为什么不能工作。 因为,我在变量映射中设置的变量也和集合一一样。所以第一个循环有效,但下一个循环无效。

当我在变量映射中设置不同的变量时,它完全可以工作。

我为粗心的错误道歉。


我正在使用 SSIS 2008。 我从文本文件中得到两种数据,日期(4/1,4/2,4/3)和数字(10,20,30)。

我将它们作为数组和对象类型输入到变量中。

我尝试使用 foreach 循环容器来循环它们。我将数组放在变量的枚举器中。我确认它循环并使用 msgbox 显示消息 4/1,4/2,4/3。循环成功。

我尝试以上述相同的方式循环不同的数字变量。成功显示 10,20,30。

但是,我在数字的 foreach 容器中设置了日期的 foreach 循环容器。 msgbox 开始显示 10 4/1, 10 4/2, 10 4/3,但接下来是空消息,然后出现错误

错误:ForEach Enumerator 的 GetEnumerator 方法失败,错误为 0x80131509“(null)”。当 ForEach 枚举器无法枚举时会发生这种情况。

更多信息,调试时,两个foreach循环容器是红色的,但是两个容器中msgbox的脚本任务是绿色的。

我想知道为什么以及如何解决这个问题。

【问题讨论】:

    标签: foreach ssis


    【解决方案1】:

    我遇到了这个问题。我通过将参数值应用于“Foreach 循环编辑器”窗口中的“Foreach ADO 枚举器”来解决它。

    希望对你有帮助。

    【讨论】:

      【解决方案2】:

      我查看了您更新的问题,原因肯定是由于您尝试枚举包含 NULL 的对象变量。正如您在脚本任务中应用消息框时所述,其中一个值为“空”,即发生错误并且 ForEach 循环变为红色时。 ForEach 循环更改为 Red,因为它无法枚举 NULL。

      解决此问题有两种选择:

      1. 在将值分配给对象变量(它是一个数组)时,应用一个检查空值的条件。如果不为 NULL,则添加或插入对象(数组)变量。
      2. 在嵌套的 ForEach 循环中应用一个表达式,该循环使用内置函数检查空值并将其更改为 0(零)之类的值。您可能需要在 ForEachEnumerator 属性上应用表达式,以便发送到变量映射的值不是 NULL。这需要一些实验。

      如果您正在从数据库表中读取数据,则可以使用 SQL 语句轻松解决此问题,该语句应用 ISNULL 函数检查 NULL 并将其更改为其他值。在您的情况下,您正在从文本文件中读取数据,并且需要找到一种以编程方式对 C# 或 VB.NET 执行相同操作的方法,以了解如何将值数组保存到对象变量中。

      希望这会有所帮助。如果有帮助,请将我的回复标记为已回答您的问题。谢谢。

      【讨论】:

      • 第 2 点适用于我的情况。我有变量要枚举,但需要在 ForEach 循环开始之前进行 NULL 检查。怎么做?我的 User::Variable 是 Object 类型。设置 ISNULL() 表达式未识别变量类型。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多