使用c #windows窗体调用ssis包(包含要在ssis包中传递的变量)

时间:2015-07-10 10:02:20

标签: c# ssis

我有一个SSIS包。我设计了一个包含标签,文本框和按钮的窗体,用于调用ssis。但我被困在一个场景中。 就像假设我在ssis中有5个变量,其中一个变量名称表示帐号需要从windows表单文本框中获取。

我的文本框代码是

 private void textBox1_TextChanged(object sender, EventArgs e)
    {
        TextBox objTextBox = (TextBox)sender;
        string theText = objTextBox.Text;
        string pkgLocation;
        Package pkg = null;
        Microsoft.SqlServer.Dts.Runtime.Application app;
        DTSExecResult pkgResults;
        Microsoft.SqlServer.Dts.Runtime.Variables myVars = pkg.Variables;

        pkgLocation =
        @"C:\Users\Visual Studio 2008\Projects" +
        @"\Integration Services Project1\xyz.dtsx";
        app = new Microsoft.SqlServer.Dts.Runtime.Application();
        pkg = app.LoadPackage(pkgLocation, null);

        myVars["Account_number"].Value = theText;

        pkgResults = pkg.Execute(null, myVars,null,null,null);
    }

这里的问题是,只需输入一个数字,然后在窗口中输入9,它就会开始执行包。我真的想让用户输入完整的account_Number并按下按钮运行包。

请告诉我代码中的问题或者我应该添加什么才能在点击按钮时获取account_number?

1 个答案:

答案 0 :(得分:0)

您正在textBox1_TextChanged事件中编写代码,这就是每次在文本框中键入字母或数字时代码执行的原因。每当您在文本框中键入内容TextChanged时,都会触发事件。

相反,如果您希望代码在button_click上执行,那么您应该在button_click事件中编写代码。

在button_click上调用包。这样,每次在文本框中键入内容时都不会执行包。

修改

您的pkg对象为空,表示您收到该错误的原因。加载包后移动Microsoft.SqlServer.Dts.Runtime.Variables myVars = pkg.Variables;部分。

pkg = app.LoadPackage(pkgLocation, null);
Microsoft.SqlServer.Dts.Runtime.Variables myVars = pkg.Variables;
private void button_clicked(object sender, EventArgs e)
{
    string theText = textBox1.Text;
    string pkgLocation;
    Package pkg = null;
    Microsoft.SqlServer.Dts.Runtime.Application app;
    DTSExecResult pkgResults;
    pkgLocation =
    @"C:\Users\Visual Studio 2008\Projects" +
    @"\Integration Services Project1\xyz.dtsx";
    app = new Microsoft.SqlServer.Dts.Runtime.Application();
    pkg = app.LoadPackage(pkgLocation, null);

    Microsoft.SqlServer.Dts.Runtime.Variables myVars = pkg.Variables;  

    myVars["Account_number"].Value = theText;

    pkgResults = pkg.Execute(null, myVars,null,null,null);
}