2011-03-07 37 views
1

我確定這是一個簡單的問題,但我試圖將2列合併到一個新的輸出列中,但沒有任何運氣。每次我得到'對象引用未設置爲對象的實例'。錯誤將值分配給SSIS腳本組件新的輸出列

這裏是我的代碼:

Imports System 
Imports System.Data 
Imports System.Math 
Imports Microsoft.SqlServer.Dts.Pipeline.Wrapper 
Imports Microsoft.SqlServer.Dts.Runtime.Wrapper 

Public Class ScriptMain 
    Inherits UserComponent 

    Public Overrides Sub Input0_ProcessInputRow(ByVal Row As Input0Buffer) 
     ' 
     ' Add your code here 
     ' 
     Dim tmpStr As String 
     tmpStr = "" 
     If Not IsNumeric(Row.addrmap.ToString) Then 
      tmpStr = Row.addrmap.ToString.Substring(Row.addrmap.ToString.Length - 2, 1) 
      tmpStr = Row.addrmap.ToString.Remove(Row.addrmap.ToString.Length - 2, 1).PadLeft(3, CChar("0")) & " " & tmpStr.PadLeft(3, CChar("0")) & " " & Row.addrpar.ToString 

     Else 
      tmpStr = Row.addrmap.ToString.PadLeft(3, CChar("0")) & " " & "000 " & Row.addrpar.ToString 
     End If 
     Row.addrMapPar = tmpStr 
    End Sub 

End Class 

感謝您的幫助!

回答

4

我想通了這個問題!它與數據中的NULLS有關。我沒有提供數據,我只是解析它,發現有一些NULL我不知道。

爲了修正它,我使用:

If Row.addrmap_IsNull = False and Row.addrpar_IsNull = False Then 
... 
End If 
+1

好的發現,感謝您發佈的答案。 – grapefruitmoon 2011-03-08 16:55:46

3

您是否已將新的輸出列添加到腳本組件任務的「輸入和輸出」屬性窗格中? enter image description here

+0

是的,addrMapPar字段被設置爲僅與addrmap和addrpar字段僅輸入列的輸出列中。 – JFV 2011-03-07 19:22:54

+0

你發佈的內容看起來不錯,你有沒有其他的代碼可能會導致錯誤?數據類型和輸入/輸出名稱怎麼樣,它們都是正確的? – grapefruitmoon 2011-03-07 21:14:53

+0

唯一的其他代碼(也是炸彈)是來自另一個表的數據,我正在做同樣的事情。輸入/輸出名稱和數據類型應該是正確的。這可能是一個問題,輸出列不是輸入列嗎?或者是否有我缺少的Output0_ProcessOutputRow函數? – JFV 2011-03-07 21:25:48