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

本文关键字:ssis 包中传 变量 windows 窗体 调用 使用 包含 | 更新日期: 2023-09-27 18:01:57

我有一个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放在按钮上单击?

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

你正在写你的代码在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);
}