2011-03-07 72 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