Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/drupal/3.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 问题:SSIS包循环脚本组件中的数据转换_Sql_Sql Server 2008 R2_Ssis_Dts - Fatal编程技术网

Sql 问题:SSIS包循环脚本组件中的数据转换

Sql 问题:SSIS包循环脚本组件中的数据转换,sql,sql-server-2008-r2,ssis,dts,Sql,Sql Server 2008 R2,Ssis,Dts,我已经在SQLServer2008R2中开发了一个包。我想使用脚本块转换数据。但我得到的错误是,第一个和最后一个记录没有插入,它试图插入违反完整性约束的null。下面是我用VB脚本编写的代码 <microsoft.sqlserver.dts.pipeline.ssisscriptcomponententrypointattribute()> _ <clscompliant(false)> _ Public Class ScriptMain

我已经在SQLServer2008R2中开发了一个包。我想使用脚本块转换数据。但我得到的错误是,第一个和最后一个记录没有插入,它试图插入违反完整性约束的null。下面是我用VB脚本编写的代码

    <microsoft.sqlserver.dts.pipeline.ssisscriptcomponententrypointattribute()> _
    <clscompliant(false)> _

    Public Class ScriptMain
    Inherits UserComponent
    Dim i As Integer = 0

    Public Overrides Sub PreExecute()
        MyBase.PreExecute()        
    End Sub

    Public Overrides Sub PostExecute()
        MyBase.PostExecute()        
    End Sub
    Public Overrides Sub Input0_ProcessInputRow(ByVal Row As Input0Buffer)

            i = i + 1
            With Output0Buffer
                .OrderHeaderID = i
                .CustomerNumber = Row.CUSTNO
                .OrderNumber = Row.ORDER
                .TermsCode = Row.TRMSCD
                .TermsDescription = Row.TRMDSC
                .TotalLines = Row.TOTLNS
                .TotalDollars = Row.TOTDOL
                .ComCls = Row.COMCLS
                .DropShip = Row.DRPSHP
                .DropshipPurchaseOrder = Row.DSPONO
                .InvoiceNumber = Row.INVNO
                .LstSeq = Row.LSTSEQ
                .OrderType = Row.ORDTYP
                .PONumber = Row.PONUMB
                .ProgramCode = Row.PROGCD
                .ProgramDeal = Row.PROGDL
                .ProgramName = Row.PRGNAM
                .PRONumber = Row.PRONUM
                .ReceivedVia = Row.RCVVIA
                .StatusMessage = Row.STAMSG
                .TermsDescription = Row.TRMDES
                .TermsDiscount = Row.TRMDSC
                .TruckName = Row.TRKNAM

                If IsDate(Row.SHPDAT) Then
                    .ShipDate = Row.SHPDAT
                End If

                If IsDate(Row.ORDDAT) Then
                    .OrderDate = Row.ORDDAT
                End If

                If IsDate(Row.INVDAT) Then
                    .InvoiceDate = Row.INVDAT
                End If

                If IsDate(Row.DATING) Then
                    .Dating = Row.DATING
                End If

                If Not Row.INVDAT_IsNull Then
                    .AddRow()
                Else
                    Exit Sub
                End If
            End With

    End Sub

    Public Overrides Sub CreateNewOutputRows()

        Output0Buffer.AddRow()

    End Sub
End Class
_
_
公共类ScriptMain
继承用户组件
尺寸i为整数=0
公共覆盖子预执行()
MyBase.PreExecute()
端接头
公共重写子PostExecute()
MyBase.PostExecute()
端接头
公共覆盖子Input0\u进程InputRow(ByVal行作为Input0Buffer)
i=i+1
带Output0Buffer
.OrderHeaderID=i
.CustomerNumber=行.CUSTNO
.OrderNumber=行.ORDER
.TermsCode=Row.TRMSCD
.TermsDescription=Row.TRMDSC
.totalines=行。总计
.TotalDollars=Row.TOTDOL
.ComCls=行.ComCls
.DropShip=Row.DRPSHP
.DropshipPurchaseOrder=行.DSPONO
.InvoiceNumber=行。INVNO
.LstSeq=行.LstSeq
.OrderType=Row.ORDTYP
.PONumber=行.PONUMB
.ProgramCode=Row.PROGCD
.programdal=Row.PROGDL
.ProgramName=Row.PRGNAM
.PRONumber=Row.PRONUM
.ReceivedVia=行.RCVVIA
.StatusMessage=Row.STAMSG
.TermsDescription=Row.TRMDES
.TermsDiscount=Row.TRMDSC
.TruckName=Row.TRKNAM
如果是IsDate(第SHPDAT行),则
.ShipDate=行.SHPDAT
如果结束
如果是IsDate(行ORDDAT),则
.OrderDate=行.orderDat
如果结束
如果是IsDate(第INVDAT行),则
.InvoiceDate=行.INVDAT
如果结束
如果是IsDate(行日期),则
.约会
如果结束
如果不是Row.INVDAT\u为空,则
.AddRow()
其他的
出口接头
如果结束
以
端接头
公共覆盖子CreateNewOutputRows()
Output0Buffer.AddRow()
端接头
末级

目前,我试图插入10行,但它给出了错误。请指导我。

初始化变量i=0,然后在处理该行之前递增它。这可能会导致跳过输入中的第一行。

能否发布从脚本组件中得到的错误?通过查看代码,您可以在Sub-Input0\u ProcessInputRow中处理行输出,因此您可能不需要重写Sub-CreateNewOutputRows(),因为您没有创建(或打算创建)任何新行。这可能也是您受到完整性侵犯的原因。