助けが必要です。最近、クライアント用のパッケージを開発しているときにこの問題に遭遇しました。SQl タスクの結果セットをユーザー変数 (オブジェクト) に保存してから、さまざまなスクリプト タスクでアクセスしようとしています。変数のスコープはパッケージ レベルに設定されます。以下のコードを使用すると、 S.Container の Script タスクで値を取得できますが、 S.Container2 の Script タスクで同じコードを使用すると、取得できません。後者では、「dt」はデータではなくヘッダーのみを表示します。
この特定の動作の理由は? 何が足りないのですか?
SQL タスク コード -----------
select * from dimproduct
スクリプト タスク コード -----------
DataTable dt = new DataTable();
DataRow row = null;
OleDbDataAdapter oleDA = new OleDbDataAdapter();
oleDA.Fill(dt, Dts.Variables["Variable"].Value);
foreach (DataRow row_ in dt.Rows)
{
row = row_;
}
EDIT :: 次のコードも機能しません。
Variables lockedVariables = null;
Dts.VariableDispenser.LockForWrite("User::Variable");
Dts.VariableDispenser.GetVariables( ref lockedVariables);
object A;
A= lockedVariables["User::Variable"].Value;
lockedVariables.Unlock();
DataTable dt = new DataTable();
DataRow row = null;
OleDbDataAdapter oleDA = new OleDbDataAdapter();
oleDA.Fill(dt, A);
foreach (DataRow row_ in dt.Rows)
{
row = row_;
}