A trouvé ceci sur un poteau en ligne :
Ok, je signale ma solution ici parce que c'est le premier forum que j'ai regardé quand j'ai commencé à regarder.
Pendant qu'il s'avère vous ne pouvez pas réutiliser des recordsets bourrés dans des variables d'objet de SSIS à travers des tâches multiples.
Il y a une solution cependant :
Ce code avec prennent votre recordset et le poussent dans un ADO.Net DataTable. Là de vous peut faire ce que vous voulez avec lui.
DataTable décollement = nouveau DataTable () ;
Adapteur d'OleDbDataAdapter = nouvel OleDbDataAdapter () ;
adapteur. Suffisance (décollement, Dts.Variables [« ExcelSet »].
Valeur) ;
Pour quelque raison ceci vide votre variable d'objet. Ce qui ? ? ?
Maintenant ce que vous devez faire est de prendre les données dans votre DataTable et de les pousser de nouveau dans votre variable d'objet. MAIS, les autres tâches (et le code ci-dessus) attendent un ADOBD.Recordset. Tellement d'abord vous devez convertir votre datatable en ADODB.Recordset. Le code à faire qui est dans l'article a lié ci-dessous. Juste copie et pâte à votre code de manuscrit (note : coder est dans C#….peut devoir convertir en VB.Net).
http://www.codeproject.com/KB/database/DataTableToRecordset.aspxNe pas oublier de placer une référence aux objets actifs de Microsoft X en votre manuscrit (éléments de données actifs de tab>Microsoft X de Project>Add Reference>COM 2.X….J'ai employé 2.7 mais en travailleront). Ajouter a Using ADODB (ou importe ADODB) au dessus de votre page.
Restuff votre variable d'objet :
Dts.Variables [« ExcelSet »].
Valeur = ConvertToRecordset (excelTable
) ;
Et vous n'êtes pas en ligne. Vous pouvez alors réutiliser votre variable d'objet à travers des tâches de SSIS. Whew ! Venez du monde d'OO j'ai été tout consterné pour trouver que ceci n'a pas fonctionné automatiquement. Et, vraiment Microsoft, un recordset d'ADODB. Comment 1999.