0

データベーステーブルには、次のようなパスがいくつかあります。

ID          PATHXML              PATHPICT               PATHSONG
1         D:\XML\Here        D:\Picture\Image      D:\Blur\Song2
2         D:\XML\File        D:\Picture\X-Files    D:\IRONMAIDEN\Fearofthedark

SSISへのログインをオンにして、このログ結果をPathSongに保存したいと思います。D:\ Blur \ Song2 \ eventlog.log

このパスを取得するための変数を作成しました。しかし、この変数を使用して式を作成すると、機能しません。では、これを修正するにはどうすればよいですか?

4

1 に答える 1

1

(データフロータスクの)スクリプトコンポーネントでパッケージ変数にアクセスすることは、スクリプトタスクでパッケージ変数にアクセスすることと同じではありません。スクリプトコンポーネントの場合、最初にスクリプト変換エディターを開く必要があります(コンポーネントを右クリックして[編集...]を選択します)。[スクリプト]タブの[カスタムプロパティ]セクションで、スクリプトで使用できるようにするプロパティを、読み取り専用または読み取り/書き込みベースで入力(または選択)できます。ここに画像の説明を入力してください

次に、スクリプト自体の中で、変数は変数オブジェクトの強く型付けされたプロパティとして使用できるようになります。

// 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に初期化され、有効な値に設定されることはありません。したがって、それを逆参照しようとすると失敗します。

于 2013-03-15T12:47:35.867 に答える