DOBON.NET DOBON.NETプログラミング掲示板過去ログ

チェックボックスにチェックが入っている行を削除

環境/言語:[XP VB.NET VisualStudio2008]
分類:[.NET]

お世話になります。

XP VisualStudio2008 で開発をしております。

ボタンを押すとチェックボックスにチェックが入っている行(htmlで生成されたテーブル)と
DB内の該当するデータを削除するという処理を作成しています。

下記のソースコードだと3つチェックを入れて削除を行うと15秒ほどかかってしまいます。
改善策があればご教示して頂きたいです。
宜しくお願い致します。

 Protected Sub btnsakujo_Click(sender As Object, e As EventArgs) Handles btnsakujo.Click

        '変数宣言
        'テーブルの行数
        Dim m As TableRowCollection
        'ループの変数
        Dim k As Integer
        'チェックボックス
        Dim a As TableCell
        '社員番号
        Dim i As TableCell
        '社員番号テキスト
        Dim w As String

        'テーブルの行を取ってくる
        m = tblichiran.Rows

        'テーブルの行の件数-1繰り返す
        For k = 0 To m.Count - 1

            'テーブルの行を1行1列目を見ていく
            a = Me.tblichiran.Rows(k).Cells(0)
            i = Me.tblichiran.Rows(k).Cells(1)

            'もし○行目の1列目のチェックボックスがチェック・・・・
            'If DirectCast(a.Controls.Item(0), CheckBox).Checked Then

            'もし○行目の1列目のチェックボックスがチェックされていた場合
            If DirectCast(a.Controls.Item(0), CheckBox).Checked = True Then

                '番号を取得
                w = i.Text

                'データ削除
                Dim strSql As String = "DELETE FROM 従業員テーブル WHERE USER_ID = '" + i.Text + "'"
                'sql文を処理
                ExecNonQuery(strSql)

            End If

        Next

    End Sub
配列か何かに削除対象のID溜め込んで
一回のクエリで処理するようにすれば多少は改善するかもしれません。

削除対象テーブルのレコード件数が多い場合はその限りではないので
テーブルに対してインデックスが適切に貼られているかどうかの確認も必要になります。
uniさん、お返事ありがとうございます。

IDを配列にですか・・・
少し考えてやってみます。
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板