用户的问题?
不是很懂呢!
现在就是我自己机子上面测试不能通过
最后我使用了
Function Main()
    Main = DTSTransformStat_SkipRow
End Function
就解决了这个问题呢!
但是今天老大讲,不能这样使用,返回值必须为:
Main = DTSTransformStat_OK
如果这样,就会出现上面的提示错误讯息!

解决方案 »

  1.   

    你目的字段的数据类型为数值型,而源字段的数据类型为字符型,就有可能出现,你现在的这种情况.因为如果你源字段可以为NULL值,在插入时肯定回抱错,原因是int不能为空...
    插入的时候判断一下:
    if DTSSource("fldDis_Num") = null then
    DTSDestination("fldDis_Num") = 0
    else
    DTSDestination("fldDis_Num") = DTSSource("fldDis_Num")
    end if
    等不等于0还要你自己定,我只是举个例子~!!
      

  2.   

    NULL值的问题啊, 目的表不允许插入NULL值吧?
      

  3.   

    知道是Null值的问题,但问题是:
        Function Main()
              Main = DTSTransformStat_OK
         End Function
    main函数中什么都没有做呀!
    只是在Transformation Options中的Source Columns和Destination Columns中选择了两个Columns呀!
    并且这个表是完全相同的.不过,你可以自己建立一个测试一下.
    肯定也会出现这样的问题.
      

  4.   

    main函数中什么都没有做呀!
    只是在Transformation Options中的Source Columns和Destination Columns中选择了两个Columns呀!
    \\
    似乎错误提示并没有说是 Main 过程出错吧? 你定义了两个列的数据传输, 那如果这两个列有不允许为NULL的定义, 但你又要插入NULL值, 一样会报错吧?
      

  5.   

    如果是你,你会认为是什么地方出现了错误呢!
    或者换句话讲,是什么地方进行了Insert的事件,所以才会出现 Null值的错误呢!
      

  6.   

    还有一个问题呀!
    也是DTS的,如何控制
    Transform Data Task的顺序呢?
    也就是讲,在DTS包中,有三个Transform Data Task,如何让这个执行结束再让另外一个执行呢!
    多谢了!
      

  7.   

    1.你把那兩條語句都刪除了,那就是什麼都不干,這個DTS還有什麼作用呢??
      錯誤的提示應該是企圖把NULL插入目的表中,提示錯誤.
    2.可以參考SQL聯機幫助!
        DTSTransformStat_OK :  Default conversions (if any) succeeded. Write the row to destination if specified, without calling any error handlers. 
        DTSTransformStat_SkipRow : Terminate further processing of this row, for nonerror reasons. 3.可以用isnull(DTSSource("fldDisPrj_Num"))來判斷.
      舉個例子,假如你要把DTSSource("fldDisPrj_Num")為null的情況排除掉,可以這樣
    Function Main()
      if isnull(DTSSource("fldDisPrj_Num")) Then
          Main=DTSTransformStat_SkipRowInfo
      else
          DTSDestination("fldDisPrj_Num") = DTSSource("fldDisPrj_Num")
          DTSDestination("fldDis_Num") = DTSSource("fldDis_Num")
          Main = DTSTransformStat_OK
      end if
    End Function
      

  8.   

    还有一个问题呀!
    也是DTS的,如何控制
    Transform Data Task的顺序呢?
    也就是讲,在DTS包中,有三个Transform Data Task,如何让这个执行结束再让另外一个执行呢!
    多谢了!--------------------
    右鍵Transform Data Task--Workflow Properties--New--選擇Souece Step在哪個成功後執行
      

  9.   

    谢谢您的回答.
    '**************************************************************************
    1.你把那兩條語句都刪除了,那就是什麼都不干,這個DTS還有什麼作用呢??
      錯誤的提示應該是企圖把NULL插入目的表中,提示錯誤.
    '**************************************************************************
    是,你这样的理解我也曾有过,但是很快对其进行了怀疑.
    你也讲,将两条语句删除了,什么都不干,这个DTS应该什么都没有做了.
    那么,为什么在执行的时候还会出现Insert NULL值的错误呢?
    所以我认为即时ActiveX中只有一个返回值,但是在
    Transformation Options中的Source Columns和Destination Columns中选择了两个Columns,
    所以DTS包会认为它需要把Destination的值Insert 到Source中.
    你觉得呢?或许我的理解是错误的!多谢!
      

  10.   

    playwarcraft,多谢你!
    Transform Data Task order的问题解决了!
      

  11.   

    看來我理解有誤.
    Function Main()
       Main = DTSTransformStat_OK
    End Function這樣不是什麼都不干,而是每行以null轉換到目的表中.
    可以建2個表來看下結果,
    create table table1 (c1 int,c2 int)
    insert into table1
    select 1,2
    union 
    select 3,4
    union 
    select 5,6create table table2(c3 int ,c4 int)執行DTS
    執行語句 select * from table2
    c3   c4
    ----------
    NULL NULL
    NULL NULL
    NULL NULL
      

  12.   

    是这样的,那么如何解决这个问题呢?
    我知道用   Main = DTSTransformStat_SkipRow就可以解决这个问题
    但是现在老大不让用这个,讲如果有重要数据的话就糟糕了.
    所以你看呢?
      

  13.   

    你的要求是什麼??
    是要把NULL的過慮掉,把不是NULL的轉換到目的表中去嗎?
    我上面好像已經回答了吧
      

  14.   

    是要将Null值的设置为一个默认值,然后INSERT
      

  15.   

    假設fldDisPrj_Num存在NULL的情況,Function Main()
      if isnull(DTSSource("fldDisPrj_Num")) Then
          DTSDestination("fldDisPrj_Num")=默認值 
          DTSDestination("fldDis_Num")= DTSSource("fldDis_Num")
          Main = DTSTransformStat_OK
      else
          DTSDestination("fldDisPrj_Num") = DTSSource("fldDisPrj_Num")
          DTSDestination("fldDis_Num") = DTSSource("fldDis_Num")
          Main = DTSTransformStat_OK
      end if
    End Function
      

  16.   

    这个方法我觉得应该可以解决我的问题.
    但是为什么会出现Insert null,我倒是还没有弄明白呢!
    多谢了!多谢!