2011-10-19 65 views
2

有誰知道如何在SSIS腳本中將一個用戶變量賦值給另一個用戶變量?SSIS用戶變量賦值

我有兩個用戶變量,它們都是DateTime類型。

我嘗試分配一個其他的腳本任務,我得到一個無效的錯誤類型

給我的錯誤: 錯誤:System.Reflection.TargetInvocationException:異常已被拋出調用的目標。 ---> Microsoft.SqlServer.Dts.Runtime.DtsRuntimeException:分配給變量「User :: Query_AccountingDay」的值的類型與當前變量類型不同。變量在執行期間不能改變類型。變量類型是嚴格的,除了Object類型的變量。

Iv嘗試鑄造,那不工作。

請幫助

回答

4

所以你試過了嗎?

Dts.Variables["Query_AccountingDay"].Value = Convert.ToDateTime(Dts.Variables["Override_AccountingDay"].Value.ToString()); 

如果這不起作用,請介意抓住變量窗口的快速截圖,以便我們驗證數據類型?

礦看起來像這樣,倍率值是2007-07-07,查詢2011-10-19

Variables window

腳本任務正是如此配置 Script task variables window

身體的代碼看起來像此

public void Main() 
    { 
     MessageBox.Show(String.Format("{0}:{1}", "Override_AccountingDay", Dts.Variables["Override_AccountingDay"].Value)); 
     MessageBox.Show(String.Format("Before {0}:{1}", "Query_AccountingDay", Dts.Variables["Query_AccountingDay"].Value)); 

     Dts.Variables["Query_AccountingDay"].Value = Convert.ToDateTime(Dts.Variables["Override_AccountingDay"].Value.ToString()); 
     Dts.TaskResult = (int)ScriptResults.Success; 

     MessageBox.Show(String.Format("After {0}:{1}", "Query_AccountingDay", Dts.Variables["Query_AccountingDay"].Value)); 
    } 

通過消息框執行結果

--------------------------- 

--------------------------- 
Override_AccountingDay:7/7/2007 7:37:36 AM 
--------------------------- 
OK 
--------------------------- 

--------------------------- 

--------------------------- 
Before Query_AccountingDay:10/19/2011 7:37:41 AM 
--------------------------- 
OK 
--------------------------- 

--------------------------- 

--------------------------- 
After Query_AccountingDay:7/7/2007 7:37:36 AM 
--------------------------- 
OK 
--------------------------- 
+0

啊,這一個固定它。我試圖用(DateTime)投射,我也在我的代碼中發現了一個小錯誤,這也導致了一個問題。感謝這個寫得很好的答案! – Cheyne

0

的Query_AccountingDay變量必須被指定爲讀寫變量,而不是因爲你已經指定了一個只讀變量。

希望這有助於

斯內德

+2

爲了讓這個兩年後的答案成爲可能,你真的應該告訴爲什麼這是相關的,並表明要做到這一點。 –