【问题标题】:can not pass user variable in script component无法在脚本组件中传递用户变量
【发布时间】:2015-06-02 01:15:15
【问题描述】:

我正在尝试为脚本组件中的其他计算调用 2 个用户变量。

public string getFinYear(DateTime dt)
    {
        string finYr;
        if (dt.Month >= 7 && dt.Month <= 12)
            finYr = dt.Year.ToString().Substring(2, 2) + "_" + dt.AddYears(1).Year.ToString().Substring(2, 2);
            //finYr = dt.Year.ToString()+ "-" + dt.AddYears(1).Year.ToString();

        else
            finYr = dt.AddYears(-1).Year.ToString().Substring(2, 2) + "_" + dt.Year.ToString().Substring(2, 2);
            //finYr = dt.AddYears(-1).Year.ToString() + "-" + dt.Year.ToString();

        return finYr; 
    }


public void Main()
    {
        // TODO: Add your code here

        Dts.Variables["User::currentDT"].Value = DateTime.Now; // current date time

        if (Dts.Variables.Contains("CalYear") == true && Dts.Variables.Contains("CalMonth") == true)
        {
           int yr = (int)Dts.Variables["CalYear"].Value;

           int mth = (int)Dts.Variables["CalMonth"].Value;

            DateTime firstDayOfMonth = new DateTime(yr, mth, 1);

            Dts.Variables["User::monthName"].Value = firstDayOfMonth.ToString("MMMM", CultureInfo.InvariantCulture);

            Dts.Variables["User::finYear"].Value = getFinYear(firstDayOfMonth);

        } .....

在上面的代码中,我手动设置了 CalYear = 2015 和 CalMonth = 2;但是,当我运行脚本时,它不会返回 monthName 和 finYear。

有什么想法吗?

【问题讨论】:

  • 检查您是否将这些变量标记为脚本任务的“读写变量”。
  • 谢谢,是的,我都勾选了。其实传递那些系统变量很容易,但是对于用户变量来说,就有点烦了

标签: ssis


【解决方案1】:

尝试调试脚本任务或使用消息框显示值,然后再将其分配给日或月。 使用 System.Windows.Forms;

MessageBox.Show(Dts.Variables["Foo"].Value.ToString())

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-12-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多