Truy cập biến gói trong một Script Component (của một luồng dữ liệu Task) là không giống như truy cập vào các biến gói trong một Script công tác. Đối với thành phần tập lệnh, trước tiên bạn cần mở Script Transformation Editor (nhấp chuột phải vào thành phần và chọn "Chỉnh sửa ..."). Trong phần Thuộc tính tùy chỉnh của tab Tập lệnh, bạn có thể nhập (hoặc chọn) thuộc tính bạn muốn cung cấp cho tập lệnh, trên cơ sở chỉ đọc hoặc viết-đọc:
Sau đó, bên trong tập lệnh, các biến sẽ có tính chất như mạnh mẽ, đánh máy của biến đối tượng:
// 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 ...
}
một caveat quan trọng: nếu bạn cần phải ghi cho một biến gói, bạn chỉ có thể làm như vậy trong phương pháp PostExecute().
Về đoạn mã:
IDTSVariables100 varCollection = null;
this.VariableDispenser.LockForRead("User::FilePath");
string XlsFile;
XlsFile = varCollection["User::FilePath"].Value.ToString();
varCollection
được khởi tạo null và không bao giờ đặt một giá trị hợp lệ. Do đó, bất kỳ nào cố gắng không tham khảo, nó sẽ thất bại.
Nguồn
2012-11-19 17:51:29
Lỗi hoặc hành vi bất ngờ bạn đang gặp phải là gì? – billinkc