2011-10-19 14 views
2

誰かがSSISのスクリプトで別のユーザー変数を割り当てる方法を知っていますか?SSISユーザー変数の割り当て

私は2つのユーザー変数を持っていますが、どちらもDateTime型です。

私は、スクリプトタスク内の他の1つを割り当てようと私は、無効な型エラー

は私にエラーを与え得る: エラー: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年7月7日で、このようになり、クエリは、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変数は、指定したReadOnly変数ではなく、ReadWrite変数として指定する必要があります。

希望これはうん

ネッド

+2

2年後にこれを可能な答えにするには、なぜこれが関係しているのかを伝え、これを行うことを示してください。 –

関連する問題