DataGridView で選択した行の値を更新

解決


PS  2012-06-26 17:08:21  No: 147662  IP: 192.*.*.*

Visualbasic2010 にて
DataGridViewで選択した行の特定の列の値を一括で更新するプログラムを
作成しています。
今は以下のようなプログラムなのですが、件数が多くなるとかなり時間が
かかってしまうので、少しでも処理時間を短くしたいのですが何かよい知恵
はないでしょうか?

For Each r As DataGridViewRow In DataGridView1.SelectedRows
  Try
     Dim CnnS As New OleDbConnection(省略)
     Dim SQLCm As OleDbCommand = CnnS.CreateCommand
         CnnS.Open() 
         SQLCm.CommandText = "UPDATE文〜以下省略"
         SQLCm.ExecuteNonQuery()

         CnnS.Close()
  Catch ex As Exception
      省略
  End Try
Next r
データ数としては最大5000件くらいまでありえます。
よろしくお願いいたします。

編集 削除
ババ  2012-06-26 17:17:56  No: 147663  IP: 192.*.*.*

少なくとも、ループの中でコネクションを開いたり閉じたりするのは効率が悪いと思います。

ところでDataGridViewに表示されているデータはバインドされているのですか?

編集 削除
PS  2012-06-26 17:52:16  No: 147664  IP: 192.*.*.*

Datagridはアクセスのデータをバインドし、表示させています。

編集 削除
月光  2012-06-27 09:33:18  No: 147665  IP: 192.*.*.*

> Dim CnnS As New OleDbConnection(省略)

の行をFor Eachの中に入れているのはなぜですか?
(まさか、DataGridViewの行によって対象となる Accessファイルが違うとか?)

また、UPDATEする内容は、DataGridViewの選択行毎に異なるのですか?

編集 削除
PS  2012-06-27 18:54:46  No: 147666  IP: 192.*.*.*

For Each の中からTry 〜End Try を出して解決しました。

編集 削除