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件くらいまでありえます。
よろしくお願いいたします。
少なくとも、ループの中でコネクションを開いたり閉じたりするのは効率が悪いと思います。
ところでDataGridViewに表示されているデータはバインドされているのですか?
Datagridはアクセスのデータをバインドし、表示させています。
> Dim CnnS As New OleDbConnection(省略)
の行をFor Eachの中に入れているのはなぜですか?
(まさか、DataGridViewの行によって対象となる Accessファイルが違うとか?)
また、UPDATEする内容は、DataGridViewの選択行毎に異なるのですか?
For Each の中からTry 〜End Try を出して解決しました。
ツイート | ![]() |