Ответ 1
Доступ к переменным пакета в Script Компонент (задачи потока данных) - это не то же самое, что доступ к переменным пакета в Script Задача. Для компонента Script вам сначала нужно открыть Script Редактор преобразования (щелкните правой кнопкой мыши на компоненте и выберите "Изменить". ".). В разделе" Пользовательские свойства "вкладки Script вы можете ввести (или выбрать) свойства, которые вы хотите сделать доступными для script, либо по принципу" только для чтения", либо для чтения-записи:
Затем в самом Script переменные будут доступны как строго типизированные свойства объекта Variables:
// 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
инициализируется нулем и никогда не устанавливается в допустимое значение. Таким образом, попытка любой разыменовать его не удастся.