我对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();
}
答案 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);
下一步是让它适用于两个变量。