J'ai un objet générique qui est transmis dans une tâche de script à partir d'un processus SQL. L'objet sera essentiellement une table de données, mais afin d'obtenir le résultat complet du processus SQL, je dois le stocker dans un objet générique.
Donc, si j'ai: p>
Object A = Dts.Variables[0]; strin x = A.Column[0].value.tostring();
5 Réponses :
Suggestion n ° 1: Variables d'accès par nom, Index numérique non numérique.
Suggestion n ° 2: Consultez le résultat de la propriété Value sur le type d'objet que vous attendez. P>
Ainsi: < / p>
Non; C'est l'opérateur C # comme code>. C'est comme une opération de distribution, mais renvoie
null code> si la distribution ne peut pas être faite. Voir msdn.microsoft.com/en-us/library/cscsdfbt.aspx A> Pour plus de détails.
Mercy, c'est pratique. Cela simplifie certainement une certaine logique que j'ai dans les bibliothèques d'accès aux données.
Il n'y a rien de mal à analyser une table de données d'un objet. J'ai vu Andy Leonard Faites-le sur ses frameworks ETL.
Vous étiez sur le chemin correct, mais vous ne voyez pas la photo entière. Ce code attribue l'objet de type variable (environ) Pour A. Vous essayez ensuite d'accéder à une propriété qui n'existe pas. p> Votre besoin de saisir la valeur em> de la variable. Vous pouvez le faire soit comme l'affectation à un p> ou si vous avez besoin de faire autre chose avec la variable réelle, vous gardez votre affectation de code actuelle d'un accès à l'autre. La propriété de valeur. p> Le code ci-dessus pour le jeu de données / datawow est approximatif. L'emporter important est d'accéder aux goodies une variable SSIS tient, vous devez accéder à la valeur de l'objet. P> P>
Downvoter, soin de m'aider à comprendre ce qui devrait être fait pour améliorer cette réponse?
Je n'ai pu obtenir aucune des réponses ci-dessus au travail, la liste ci-dessous est donc le code que j'ai utilisé pour charger le datable. "Utilisateur :: transactionalrepdbs" est une variable SSIS d'objet (System.Object) chargée via un "jeu de résultats complet" à partir d'un script de tâche SQL exécuté. La tâche de script utilisé est C #. Ce lien m'a assisté.
using System.Data.OleDb; DataTable dt= new DataTable(); OleDbDataAdapter adapter = new OleDbDataAdapter(); adapter.Fill(dt, Dts.Variables["User::transactionalRepDBs"].Value); String _showMe; foreach (DataRow row in dt.Rows) { //insert what you want to do here for (int i = 0, _showMe = ""; i < row.ItemArray.Length; i++ ) { _showMe += row.ItemArray[i].ToString() + " | "; } MessageBox.Show("Data row #" + dt.Rows.IndexOf(row).ToString() + " value: " + _showMe); }
Un homme génial,
Ceci fonctionne parfaitement bien .. p>
// Works Perfectly fine ....ssis , c# DataTable dt = new DataTable(); OleDbDataAdapter adapter = new OleDbDataAdapter(); adapter.Fill(dt, Dts.Variables["User::VariableObj"].Value); foreach (DataColumn cols in dt.Columns) { MessageBox.Show("Colum Name = " + cols.ToString()); } foreach (DataRow row in dt.Rows) { MessageBox.Show( "rows ID = " + row[0].ToString() + " rows Name = " + row[1].ToString()); }
Tandis que cet extrait de code peut résoudre la question, y compris une explication aide vraiment à améliorer la qualité de votre message. N'oubliez pas que vous répondez à la question des lecteurs à l'avenir, et ces personnes pourraient ne pas connaître les raisons de votre suggestion de code.