2015-05-19 54 views
0

謝謝你回答這個問題。ssis錯誤:在foreach循環容器中的foreach

我檢查變量是否包含null,但它不是null的原因。

今天,我找出爲什麼不能工作。 因爲我在變量映射中設置的變量也與集合一樣。所以第一個循環有效,但下一個循環不起作用。

當我在變量映射中設置不同的變量時,它完全工作。

我對不小心的錯誤表示歉意。


我使用SSIS 2008 我從文本文件中的兩個類型的數據,日期(4/1,4/2,4/3)和數量(10,20,30)。

我在數組和對象類型的變量中輸入它們。

我試圖通過使用foreach循環容器來循環它們。我把數組放在枚舉器中的變量。我確認它循環並使用msgbox顯示消息4/1,4/2,4/3。它成功的循環。

我嘗試通過上面相同的方式循環編號的不同變量。它成功顯示10,20,30。

howwever,我在數字的foreach容器中設置日期的foreach循環容器。 msgbox首先顯示10 4/1,10 4/2,10 4/3,但接下來是空消息,則發生錯誤

錯誤:ForEach枚舉器的GetEnumerator方法失敗,錯誤爲0x80131509「(空值)」。這發生在ForEach枚舉器無法枚舉時。

更多信息,當調試時,兩個foreach循環容器是紅色的,但是兩個容器中msgbox的腳本任務是綠色的。

我想知道爲什麼以及如何解決問題。

回答

0

我查看了您更新的問題,原因肯定是由於您試圖枚舉包含NULL的對象變量。正如您在腳本任務中應用消息框時所述,其中一個值爲「空」,即發生錯誤並且ForEach循環變爲紅色時。 ForEach循環更改爲Red,因爲它無法枚舉NULL。

有兩個選項用於解決此問題:

  1. 在點值分配到對象變量(它是一個數組),應用檢查空值的條件。如果不是NULL,則添加或插入對象(數組)變量。
  2. 在嵌套的ForEach循環中應用表達式,該循環使用內置函數來檢查null並將其更改爲類似於0(零)的內容。您可能需要在ForEachEnumerator屬性上應用表達式,以便發送到變量映射的值不是NULL。這將需要一些實驗。

如果您正在從數據庫表中讀取數據,那麼使用SQL語句應用ISNULL函數來檢查NULL並將其更改爲其他數據很容易解決。在你的情況下,你正在從一個文本文件中讀取數據,並且需要找到一種通過編程方式對C#或VB.NET執行相同操作的方法,以便將一個值數組如何保存到對象變量中。

希望這會有所幫助。如果有幫助,請將我的回答標記爲已回答您的問題。謝謝。