2016-08-15 1 views
0

ユーザ変数にリストを割り当てようとしましたが、うまくいかないようです。ここでコードは、何が間違っている可能性がありますか?リストをssis変数に割り当てる

StreamReader r = new StreamReader(Dts.Variables["User::filepath"].Value.ToString()) 
{ 
    string[] a = r.ReadLine().Split(';'); 
    List<string> list = new List<string>(a);    
    Dts.Variables["User::firstRow"].Value = list; 
} 

System.RuntimeMethod Handle.InvokeMethodで System.Reflection.Ru ntimeMethodInfo.Unsaf eInvokeInternal(OBJEC時(O bjectターゲット、[]引数、署名SIG、ブールコンストラクタオブジェクト)システムで System.Reflection.Ru ntimeMethodInfo.Invok電子(オブジェクトobj、 のBindingFlags invokeAttr、バインダーバインダー、オブジェクト[]パラメータ、 CultureInfoカルチャ) におけるT OBJ、オブジェクト[]パラメータ、[]オブジェクト引数) .RuntimeType.I nvokeMember(String name、BindingFlags bindingFlags、バインダーバインダー、Objectターゲット、Object [])引数、 Microsoft.SqlServer. Dts.Tasks.ScriptTask. VSTATaskScriptingEngi ne.ExecuteScriptで ParameterModifier []修飾子、CultureInfoカルチャ、文字列[] namedParams)()

エラーでありますスクリプトを実行するときに

+0

"動作しないようです"を定義します。間違いはありますか? System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(Object obj、Object [] parameters、Object [] arguments)の System.RuntimeMethodHandle.InvokeMethodの –

+0

(System.Reflectionの )で のオブジェクトターゲット、オブジェクトの[]引数、シグネチャsig、ブールコンストラクタ.RuntimeMethodInfo.Invoke(Object obj、BindingFlags invokeAttr、バインダーバインダー、Object []パラメーター、CultureInfoカルチャ) – hln

+0

at System.RuntimeType。Microsoft.SqlServer.Dts.Tasks.ScriptTask.VSTATaskScriptingEngine.ExecuteScript()でInvokeMember(String name、BindingFlags bindingFlags、バインダーバインダー、オブジェクトターゲット、ObjectArray、ParameterModifier []修飾子、CultureInfoカルチャ、String [] namedParams) ssisでスクリプトを実行したときのエラーです – hln

答えて

0

現在、リストオブジェクトをuser :: firstrow変数に渡そうとしています。その可変オブジェクト型ですか?あなたは本当にオブジェクト全体を渡したいですか?

あなたの変数は "firstrow"と言っているので実際にはリストから最初の文字列だけが必要なのではないかと推測します。

ので変更:この回答に基づいてあなたのコメント

あたり

Dts.Variables["User::firstRow"].Value = list; 

Dts.Variables["User::firstRow"].Value = list[0]; 

するには、[編集] how to use list collection for "foreach" in SSISリストオブジェクトを使用することが可能であるように見えます。私は実際にそれを試みたことはありませんが、私はレコードセットを渡しました。しかし、変数がオブジェクトであれば、そのリンクに従ってリストを格納するように機能するはずです。他にも潜在的な問題がいくつかあります。 1あなたのUser :: firstrowがスクリプトで利用できるReadWriteVariableとしてリストされていない場合、User :: filepathはReadOnlyVariableとしてリストされていません...読み込む行があるかどうかをテストしていません.... Tab is right thereエラーに多くのことがあり、私はデバッグがSsisスクリプトにとって難しいことを知っています。しかし、System.Windows.Forms.MessageBox.Show()を使用すると、例外を表示できます。試しキャッチブロックのすべてをラップし、catchBoxでMessageBox.Show(exception.TosTring())を実行します。したがって、このような何か:

using System.Windows.Forms; 

try 
{ 
} 
catch (Exception ex) 
{ 
    MessageBox.Show(ex.ToString()); 
    throw; 
} 

このすべては、その後、foreachループは、変数を設定するものに渡す1行のスクリプトタスクのうちのリストを取るためにあなたががやるしようとしているかの質問を頼みますか?変数をC#スクリプトで直接設定するのが最も簡単です......

+1

varaibleはオブジェクトタイプです。リストはリストで、リスト全体を変数instaedに渡したいと思います。出来ますか? – hln

+0

私はいくつかの追加の質問/コメントで答えを更新しました – Matt

関連する問題