Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 2005 为SSIS脚本组件新输出列赋值_Sql Server 2005_Ssis_Ssis 2005 - Fatal编程技术网

Sql server 2005 为SSIS脚本组件新输出列赋值

Sql server 2005 为SSIS脚本组件新输出列赋值,sql-server-2005,ssis,ssis-2005,Sql Server 2005,Ssis,Ssis 2005,我相信这是一个简单的问题,但我正在尝试将两列合并到一个新的输出列中,但没有任何运气。每次我得到一个“对象引用未设置为对象的实例。”错误 这是我的密码: Imports System Imports System.Data Imports System.Math Imports Microsoft.SqlServer.Dts.Pipeline.Wrapper Imports Microsoft.SqlServer.Dts.Runtime.Wrapper Public Class ScriptMa

我相信这是一个简单的问题,但我正在尝试将两列合并到一个新的输出列中,但没有任何运气。每次我得到一个“对象引用未设置为对象的实例。”错误

这是我的密码:

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

谢谢你的帮助

是否已将新的输出列添加到脚本组件任务的输入和输出属性窗格中?

是否已将新的输出列添加到脚本组件任务的输入和输出属性窗格中?

我解决了这个问题!这与数据中的空值有关。我没有提供数据,我只是分析了一下,发现有一些空值我不知道

为了解决这个问题,我使用了:

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

我解决了这个问题!这与数据中的空值有关。我没有提供数据,我只是分析了一下,发现有一些空值我不知道

为了解决这个问题,我使用了:

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

是的,addrMapPar字段仅设置为输出列,而addrmap和addrpar字段仅设置为输入列。您发布的内容看起来不错,是否有其他可能导致错误的代码?关于数据类型和输入/输出名称,它们都是正确的吗?唯一的其他代码(也会爆炸)是来自另一个表的数据,我正在用它做同样的事情。输入/输出名称和数据类型应正确。输出列不是输入列,这可能是一个问题吗?或者我是否缺少Output0\u ProcessOutputRow函数?您不需要输出函数,输出列也不需要是输入列。您是否尝试过删除并重新创建脚本组件任务?我想知道BufferWrapper和ComponentWrapper代码文件是否已被修改或损坏。另外,您是否能够通过使用断点或MessageBox语句调试脚本?我已经删除并重新创建了它,但是没有,我无法调试它,并且我也无法从MessageBox中获得任何信息。我将再次尝试删除并重新创建,并让您知道…是的,addrMapPar字段仅设置为输出列,而addrmap和addrpar字段仅设置为输入列。您发布的内容看起来不错,您是否有其他可能导致错误的代码?关于数据类型和输入/输出名称,它们都是正确的吗?唯一的其他代码(也会爆炸)是来自另一个表的数据,我正在用它做同样的事情。输入/输出名称和数据类型应正确。输出列不是输入列,这可能是一个问题吗?或者我是否缺少Output0\u ProcessOutputRow函数?您不需要输出函数,输出列也不需要是输入列。您是否尝试过删除并重新创建脚本组件任务?我想知道BufferWrapper和ComponentWrapper代码文件是否已被修改或损坏。另外,您是否能够通过使用断点或MessageBox语句调试脚本?我已经删除并重新创建了它,但是没有,我无法调试它,并且我也无法从MessageBox中获得任何信息。我将尝试删除并重新创建,然后让您知道。。。