(データフロータスクの)スクリプトコンポーネントでパッケージ変数にアクセスすることは、スクリプトタスクでパッケージ変数にアクセスすることと同じではありません。スクリプトコンポーネントの場合、最初にスクリプト変換エディターを開く必要があります(コンポーネントを右クリックして[編集...]を選択します)。[スクリプト]タブの[カスタムプロパティ]セクションで、スクリプトで使用できるようにするプロパティを、読み取り専用または読み取り/書き込みベースで入力(または選択)できます。
次に、スクリプト自体の中で、変数は変数オブジェクトの強く型付けされたプロパティとして使用できるようになります。
// 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 ...
}
重要な注意点の1つは、パッケージ変数に書き込む必要がある場合は、PostExecute()
メソッドでのみ書き込むことができるということです。
コードスニペットについて:
IDTSVariables100 varCollection = null;
this.VariableDispenser.LockForRead("User::FilePath");
string XlsFile;
XlsFile = varCollection["User::FilePath"].Value.ToString();
varCollectionはnullに初期化され、有効な値に設定されることはありません。したがって、それを逆参照しようとすると失敗します。