バックナンバー 第84号:VB2008 データベースプログラミング

VB 2008 Express Editiont と、SQL Server 2008 Express with Advanced Services を使って、フォームから入力した受注データを、受注ヘッダー表と受注ディテール表に登録する、受注伝票エントリープログラムを作成していきます。
受注伝票エントリー 第12回 (明細選択行削除ボタン)
第84号(2010.5.12発行)
====================================================================
       ★★ -- VB.NETデータベースプログラミング奮闘記 -- ★★
           (VB 2008 Express & SQL Server 2008 Express)
--------------------------------------------------------------------
いつもご購読ありがとうございます。ADO.NETの基本的なサンプルプログラ
ムをお届けします。これからもよろしくお願いいたします。

やさしいVB2008 ADO.NET → https://adonetvb.com/index.html
====================================================================
                ■■ 受注伝票エントリー 第12回 ■■

フォームから入力した受注データを、受注ヘッダー表と受注ディテール表に
登録するプログラムを作成します。

フォーム    → https://adonetvb.com/OrderEntry/index.html

テーブル定義  → https://adonetvb.com/OrderEntry/DB.html

バックナンバー → https://adonetvb.com/MailMagazine/index.html

--------------------------------------------------------------------
                         ■ 選択行削除ボタン ■

今回は、選択行削除ボタンクリック処理を実装します。

受注明細行を削除するときは、削除する行を選択して、選択行削除ボタンを
クリックします。
 ┌────────────────────────────┐
 │ 商品コード  商品名     数量   単価   金額│
 ├────────────────────────────┤
 │ 00001 商品00001   1  100  100│
 │ 00002 商品00002   2  200  400│

たとえば、1行目を選択し、選択行削除ボタンをクリックすれば、次のよう
に削除確認のメッセージボックスが表示されます。
 ┌────────────────┬─┐
 │明細行削除           │x│
 ├────────────────┴─┤
 │                  │
 │1行目を削除してもよろしいですか  │
 │                  │
 │ ┌―――――┐  ┌―――――┐ │
 │ │はい(Y)│  │いいえ(N) │
 │ └―――――┘  └―――――┘ │

「はい」をクリックすると、選択行が削除されます。

【選択行削除ボタンクリック処理】
選択行は、CurrentRow.Indexプロパティに設定されるので、この値を使って
バインディングソースから選択行を削除します。同時に明細リストからも、
この行が削除されます。


選択行削除ボタンクリック処理を、FormJuchuEntryクラスに追加します。

--【プログラムソースリスト:FormJuchuEntry.vb】---------------------
    '*******************************************************
    ' 選択行削除ボタンクリック処理
    '*******************************************************
    Private Sub BtnGyoSakujo_Click _
        (ByVal sender As System.Object, _
         ByVal e As System.EventArgs) Handles BtnGyoSakujo.Click

        Try
            ' 選択行インデックスの取得
            Dim gyoNo As Integer
            gyoNo = DgvMeisai.CurrentRow.Index + 1
            ' 確認メッセージ表示
            Dim yesNo As DialogResult
            yesNo = MessageBox.Show _
                (gyoNo.ToString & _
                 "行目を削除してもよろしいですか", _
                 "明細行削除", MessageBoxButtons.YesNo)

            ' 「はい」を選択したら選択行を削除
            If yesNo = Windows.Forms.DialogResult.Yes Then
                ' バインディングソースから削除
                bindingSrc.RemoveAt _
                    (DgvMeisai.CurrentRow.Index)
            End If

            ' 受注合計金額を計算
            Dim sum As Integer = 0
            For i As Integer = 0 To meisaiList.Count - 1
                sum += meisaiList(i).JuchuKingaku
            Next
            LblGokeiKingaku.Text = sum.ToString("#,##0")

            ' 商品コードにフォーカス
            TxtShohinCode.Focus()

            ' 明細行有無によるボタンの活性不活性
            If meisaiList.Count > 0 Then
                ' 選択行削除ボタン押下可能
                BtnGyoSakujo.Enabled = True
                ' 選択行変更ボタン押下可能
                BtnGyoHenko.Enabled = True
            Else
                ' 選択行削除ボタン押下不可
                BtnGyoSakujo.Enabled = False
                ' 選択行変更ボタン押下不可
                BtnGyoHenko.Enabled = False
            End If

        Catch ex As Exception
            ' 例外が発生した時の処理
            MessageBox.Show(ex.ToString, "例外発生")

        End Try

    End Sub
--------------------------------------------------------------------
次号:受注登録ボタンクリック処理の実装です。

====================================================================
VB.NET データベースプログラミング奮闘記
  発行者:
          http://park5.wakwak.com/‾weblab/
--------------------------------------------------------------------
このメールマガジン(マガジンID: 0000128094)は、
インターネットの本屋さん『まぐまぐ』から配信されています。
  http://www.mag2.com/

【購読中止の方法】購読の中止は次のホームページからお願い致します。
  http://park5.wakwak.com/‾weblab/
  http://www.mag2.com/m/0000128094.htm
--------------------------------------------------------------------
このメールマガジン及び「すぐ使えるADO.NET」「やさしいBV2008 ADO.NET」
などのホームページで公開しているソースプログラム・データの利用により
生じた損害等については、発行者は一切責任を負いません。ソースプログラ
ムの再利用は自由です。著作権は発行者が所有します。
このメールマガジン及び「すぐ使えるADO.NET」「やさしいBV2008 ADO.NET」
などホームページに掲載されている会社名・製品名等は、各社の登録商標ま
たは商標です。
====================================================================