用户的问题?
不是很懂呢!
现在就是我自己机子上面测试不能通过
最后我使用了
Function Main()
Main = DTSTransformStat_SkipRow
End Function
就解决了这个问题呢!
但是今天老大讲,不能这样使用,返回值必须为:
Main = DTSTransformStat_OK
如果这样,就会出现上面的提示错误讯息!
不是很懂呢!
现在就是我自己机子上面测试不能通过
最后我使用了
Function Main()
Main = DTSTransformStat_SkipRow
End Function
就解决了这个问题呢!
但是今天老大讲,不能这样使用,返回值必须为:
Main = DTSTransformStat_OK
如果这样,就会出现上面的提示错误讯息!
插入的时候判断一下:
if DTSSource("fldDis_Num") = null then
DTSDestination("fldDis_Num") = 0
else
DTSDestination("fldDis_Num") = DTSSource("fldDis_Num")
end if
等不等于0还要你自己定,我只是举个例子~!!
Function Main()
Main = DTSTransformStat_OK
End Function
main函数中什么都没有做呀!
只是在Transformation Options中的Source Columns和Destination Columns中选择了两个Columns呀!
并且这个表是完全相同的.不过,你可以自己建立一个测试一下.
肯定也会出现这样的问题.
只是在Transformation Options中的Source Columns和Destination Columns中选择了两个Columns呀!
\\
似乎错误提示并没有说是 Main 过程出错吧? 你定义了两个列的数据传输, 那如果这两个列有不允许为NULL的定义, 但你又要插入NULL值, 一样会报错吧?
或者换句话讲,是什么地方进行了Insert的事件,所以才会出现 Null值的错误呢!
也是DTS的,如何控制
Transform Data Task的顺序呢?
也就是讲,在DTS包中,有三个Transform Data Task,如何让这个执行结束再让另外一个执行呢!
多谢了!
錯誤的提示應該是企圖把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
也是DTS的,如何控制
Transform Data Task的顺序呢?
也就是讲,在DTS包中,有三个Transform Data Task,如何让这个执行结束再让另外一个执行呢!
多谢了!--------------------
右鍵Transform Data Task--Workflow Properties--New--選擇Souece Step在哪個成功後執行
'**************************************************************************
1.你把那兩條語句都刪除了,那就是什麼都不干,這個DTS還有什麼作用呢??
錯誤的提示應該是企圖把NULL插入目的表中,提示錯誤.
'**************************************************************************
是,你这样的理解我也曾有过,但是很快对其进行了怀疑.
你也讲,将两条语句删除了,什么都不干,这个DTS应该什么都没有做了.
那么,为什么在执行的时候还会出现Insert NULL值的错误呢?
所以我认为即时ActiveX中只有一个返回值,但是在
Transformation Options中的Source Columns和Destination Columns中选择了两个Columns,
所以DTS包会认为它需要把Destination的值Insert 到Source中.
你觉得呢?或许我的理解是错误的!多谢!
Transform Data Task order的问题解决了!
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
我知道用 Main = DTSTransformStat_SkipRow就可以解决这个问题
但是现在老大不让用这个,讲如果有重要数据的话就糟糕了.
所以你看呢?
是要把NULL的過慮掉,把不是NULL的轉換到目的表中去嗎?
我上面好像已經回答了吧
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
但是为什么会出现Insert null,我倒是还没有弄明白呢!
多谢了!多谢!