2011-10-19 64 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

为了让这个两年后的答案成为可能,你真的应该告诉为什么这是相关的,并表明要做到这一点。 –