2015-04-02 31 views
0

我对C#及其在SSIS中的使用非常新颖。我在2011年提出的问题(How do I prompt for input from an SSIS package?)中发现了一个很好的建议,由https://stackoverflow.com/users/85952/sreedhar提供。我对脚本任务中的C#代码做了一些小改动。我没有得到任何错误,但我有两个问题,我需要解决:提示从SSIS包输入的问题

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(); 
    } 
+0

你能否详细说明你在做什么?“变量似乎在脚本中填充,但在运行后遇到空白。什么是空的? – SFrejofsky 2015-04-02 17:52:26

回答

0

我不是C#专家l具备了看代码,这对我的作品。

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(); 
    } 

从什么l可看到论据给一个变量赋值必须是一个字符串文字,而不是一个字符串变量。这是我总是这样做的方式,我找不到任何使用变量名称的字符串变量的例子。尽管我同意它应该这样工作的事实!

或者换句话说

这工作 - > Dts.Variables [ “用户:: QMonth”]值= Convert.ToInt32(txt.Text)。

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

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