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

解決


PS  2012-06-27 02:08:21  No: 147662

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-27 02:17:56  No: 147663

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

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


PS  2012-06-27 02:52:16  No: 147664

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


月光  2012-06-27 18:33:18  No: 147665

> Dim CnnS As New OleDbConnection(省略)

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

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


PS  2012-06-28 03:54:46  No: 147666

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


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加