Zugriff auf Paketvariablen in einem Script Component (ein Datenflusstask) ist nicht die gleiche Paket Variablen in einem Skript Aufgabe als erreichbar. Für eine Skriptkomponente müssen Sie zuerst die Script Transformation Editor öffnen (klicken Sie mit der rechten Maustaste auf die Komponente und wählen Sie "Bearbeiten ..."). Im Abschnitt Benutzerdefinierte Eigenschaften der Registerkarte Skript können Sie die Eigenschaften eingeben oder auswählen, die für das Skript verfügbar gemacht werden sollen, entweder auf Lese- oder auf Lese-/Schreibbasis: Innerhalb des Skripts selbst
// 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 ...
}
eine wichtige Einschränkung: die Variablen als stark typisierte Eigenschaften der Variablen-Objekt zur Verfügung, wenn Sie Schreib auf eine Paketvariable benötigen, können Sie dies nur tun, in der PostExecute() -Methode.
In Bezug auf den Code-Schnipsel:
IDTSVariables100 varCollection = null;
this.VariableDispenser.LockForRead("User::FilePath");
string XlsFile;
XlsFile = varCollection["User::FilePath"].Value.ToString();
varCollection
initialisiert auf null und nie auf einen gültigen Wert gesetzt. So wird jeder Versuch, es zu dereferenzieren, fehlschlagen.
Was ist der Fehler oder das unerwartete Verhalten, dem Sie begegnen? – billinkc