访问(数据流任务的)脚本组件中的包变量与访问脚本任务中的包变量不同。对于脚本组件,您首先需要打开脚本转换编辑器(右键单击组件并选择“编辑...”)。在“脚本”选项卡的“自定义属性”部分中,您可以输入(或选择)要在只读或读写基础上提供给脚本的属性:
然后,在脚本本身中,变量将作为变量对象的强类型属性提供:
// Modify as necessary
public override void PreExecute()
{
base.PreExecute();
string thePath = Variables.FilePath;
// Do something ...
}
public override void PostExecute()
{
base.PostExecute();
string theNewValue = "";
// Do something to figure out the new value...
Variables.FilePath = theNewValue;
}
public override void Input0_ProcessInputRow(Input0Buffer Row)
{
string thePath = Variables.FilePath;
// Do whatever needs doing here ...
}
一个重要的警告:如果您需要写入包变量,您只能在PostExecute()
方法中执行此操作。
关于代码片段:
IDTSVariables100 varCollection = null;
this.VariableDispenser.LockForRead("User::FilePath");
string XlsFile;
XlsFile = varCollection["User::FilePath"].Value.ToString();
varCollection 被初始化为 null 并且永远不会设置为有效值。因此,任何取消引用它的尝试都会失败。