提示输入SSIS包的问题

时间:2015-04-02 14:56:20

标签: c# variables dynamic input ssis

我对C#及其在SSIS中的使用非常陌生。我在How do I prompt for input from an SSIS package?提出的2011年(https://stackoverflow.com/users/85952/sreedhar)提出的问题中找到了一个很好的建议。我对脚本任务中的C#代码稍作修改。我没有收到任何错误,但我有两个问题需要解决:

1。)我为提示2个不同的数据所做的更改导致第二个提示显示第一个提示的结果。

2。)变量似乎填充在脚本中,但在运行后遇到空。

请原谅我的无知,但我在这里奇怪的水域。我在下面列出了修改后的代码。

谢谢,

    System.Windows.Forms.Form frm = new Form();
    TextBox txt = new TextBox();
    Button inputset = new Button();
    String VartoSet;

    public void Main()
    {
        inputset.Text = "Enter Year to Query On";
        inputset.Width = 200;
        inputset.Height = 100;
        VartoSet = "User::QYear";
        inputset.Click += new EventHandler(inputset_Click);
        txt.Name = "Input";
        frm.Controls.Add(txt);
        frm.Controls.Add(inputset);
        frm.ShowDialog();
        MessageBox.Show(Dts.Variables[VartoSet].Value.ToString());

        inputset.Text = "Enter Period to Query On";
        VartoSet = "User::QMonth";
        inputset.Click += new EventHandler(inputset_Click);
        txt.Name = "Input";
        frm.Controls.Add(txt);
        frm.Controls.Add(inputset);
        frm.ShowDialog();
        MessageBox.Show(Dts.Variables[VartoSet].Value.ToString());

        Dts.TaskResult = (int)ScriptResults.Success;
    }

    void inputset_Click(object sender, EventArgs e)
    {
        Dts.Variables[VartoSet].Value = Convert.ToInt32(txt.Text);
        frm.Close();
    }

1 个答案:

答案 0 :(得分:0)

我不是C#专家我已经查看了代码,这对我有用。

   System.Windows.Forms.Form frm = new Form();
    TextBox txt = new TextBox();
    Button inputset = new Button();
    String VartoSet;

    public void Main()
    {
        inputset.Text = "Enter Period to Query On";
        inputset.Width = 200;
        inputset.Height = 100;
        //VartoSet = "User::QMonth";
        inputset.Click += new EventHandler(inputset_Click);
        txt.Name = "Input";
        frm.Controls.Add(txt);
        frm.Controls.Add(inputset);
        frm.ShowDialog();
        MessageBox.Show( Dts.Variables["User::QMonth"].Value.ToString());

        Dts.TaskResult = (int)ScriptResults.Success;
    }

    void inputset_Click(object sender, EventArgs e)
    {
        Dts.Variables["User::QMonth"].Value = Convert.ToInt32(txt.Text);
        frm.Close();
    }

从我可以看到,为变量赋值的参数必须是字符串文字,而不是字符串变量。这是我一直这样做的方式,我找不到任何使用字符串变量作为变量名的例子。尽管如此,我同意它应该这样工作!

或换句话说

这有效 - > Dts.Variables [" User :: QMonth"]。Value = Convert.ToInt32(txt.Text);

这不是 - > Dts.Variables [VartoSet] .Value = Convert.ToInt32(txt.Text);

下一步是让它适用于两个变量。