2011-08-10 9 views
1

データテーブルをループするときに、ストアドプロシージャに情報が渡されますが、動作しません。私はmanuellyデータシートをループしてストアドプロシージャを実行

Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click 
      Dim dv As New DataView 
      Dim dt As New DataTable 
      dv = SqlDataSource1.Select(DataSourceSelectArguments.Empty) 

      dt = dv.ToTable() 


      For Each row As DataRow In dt.Rows 

       If row("vtr_gen10").ToString() = "y" Or row("vn10").ToString() = "a" Or row("vtr_gen10").ToString() = "p" Then 
        Dim SQLCon As New SqlClient.SqlConnection 
        Dim sqlcmd As New SqlCommand 
        SQLCon.ConnectionString = SqlDataSource2.ConnectionString 

        SQLCon.Open() 
        sqlcmd.CommandText = "protest" ' Stored Procedure to Call 
        sqlcmd.CommandType = CommandType.StoredProcedure 'Setup Command Type 
        sqlcmd.Connection = SQLCon 'Active Connection 

        sqlcmd.Parameters.AddWithValue("@ID", row("id")) 
        sqlcmd.Parameters.AddWithValue("@Value", "Y") 


        sqlcmd.ExecuteNonQuery() 
        SQLCon.Close() 

       End If 

      Next 

     End Sub 
+0

「動作していません」とはどういう意味ですか? 'For Each'の中のコードが動いているのか、' If'ブロックコードが動いているのか確認するためにあなたのコードを踏んだことはありますか? – Jacob

+0

私はブレークポイントをinstertするとき何も起こらないと何も私のストアドプロシージャisntの実行を感じる私の宛先テーブルに追加されません –

+0

あなたのSubであなたの非常に最初のステートメントにブレークポイントを設定すると、ブレークポイントがヒット?そうでない場合は、イベントハンドラを正しく設定していない可能性があります。そうであれば、コードをステップ実行してSelect文が返すものを確認することができます。 – Jacob

答えて

0

されていますを使用して睡眠を追加しようとすると、それが動作するにもかかわらず、

最初の2つのレコードの後に​​IF基準が満たされていることを確かめますか?探してみるべきことは、データベース内のカラージュリターンなどスペースや他の文字列の異常です。

行( "vn10")ToStringは、たとえば "a"ではなく "a"である可能性があります。

Throw New Exception("[" & Row("vn10").ToString & "]") 

などの一時的なデバッグ行に入れる価値があります。誤って失敗したレコードの長さを検査してください。

0

は何もありませんあなたのコードで間違っているようですが、あなたはそのそのあまりにも速く動いているためと思われる場合、System.Threading.Thread.Sleep(milliseconds)

+0

hmmこのdidnt仕事 –

関連する問題