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

VB 2008 Express Editiont と、SQL Server 2008 Express with Advanced Services を使って、フォームから入力した受注データを、受注ヘッダー表と受注ディテール表に登録する、受注伝票エントリープログラムを作成していきます。
受注伝票エントリー 第5回 (フォームロードと画面の初期化)
第77号(2009.10.14発行)
====================================================================
       ★★ -- VB.NETデータベースプログラミング奮闘記 -- ★★
           (VB 2008 Express & SQL Server 2008 Express)
--------------------------------------------------------------------
いつもご購読ありがとうございます。ADO.NETの基本的なサンプルプログラ
ムをお届けします。今後ともよろしくお願い申し上げます。

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

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

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

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

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

--------------------------------------------------------------------
                     ■ フォームロードの実装 ■

前号のデータグリッドビューの列スタイルの設定を含めて、フォームロード
処理の全プログラムリストを掲載します。

未実装クラスがあるので、次の行をコメントアウトしておきます(ソースリ
ストの◆◆の行)。
  Private meisaiList As New List(Of ClsInsertDetailRow)

  bindingSrc.DataSource = meisaiList

フォームロードでは、データグリッドビューの列スタイルの設定と、システ
ム日付の取得の他に、テキストボックスやラベルの初期化、ボタンの活性・
不活性、フォーカスの設定等を行っています。


--【プログラムソースリスト:FormJuchuEntry.vb】---------------------

Option Strict On

Public Class FormJuchuEntry

    ' データグリッドビューのデータ連結
    Private bindingSrc As New BindingSource
    ' 受注明細行リスト
    '◆◆Private meisaiList As New List(Of ClsInsertDetailRow)

    '*******************************************************
    ' フォームロード処理
    '*******************************************************
    Private Sub FormJuchuEntry_Load( _
        ByVal sender As System.Object, _
        ByVal e As System.EventArgs) Handles MyBase.Load

        ' 受注明細データグリッドビュー初期化
        InitialDgvMeisai()
        ' 受注ヘッダー部初期化
        InitialHeader()
        ' 受注ディテール部初期化
        InitialDetail()

    End Sub

    '*******************************************************
    ' 受注明細データグリッドビュー初期化
    '*******************************************************
    Sub InitialDgvMeisai()

        Try
            '---<< 列スタイルの設定 >>---
            ' 列を自動生成しない
            DgvMeisai.AutoGenerateColumns = False

            ' 列幅を自動調整
            DgvMeisai.AutoSizeColumnsMode = _
                DataGridViewAutoSizeColumnsMode.AllCells

            ' テキストボックス列の生成
            Dim textColumn(4) As DataGridViewTextBoxColumn

            ' 【商品コード】列を作成する
            textColumn(0) = New DataGridViewTextBoxColumn()
            ' データソース項目とバインド
            textColumn(0).DataPropertyName = "ShohinCode"
            ' DataGridViewのヘッダータイトル設定
            textColumn(0).HeaderText = "商品コード"

            ' 【商品名称】列を作成する
            textColumn(1) = New DataGridViewTextBoxColumn()
            ' データソース項目とバインド
            textColumn(1).DataPropertyName = "ShohinMeisho"
            ' DataGridViewのヘッダータイトル設定
            textColumn(1).HeaderText = "商品名"

            ' 【受注数量】列を作成する
            textColumn(2) = New DataGridViewTextBoxColumn()
            ' データソース項目とバインド
            textColumn(2).DataPropertyName = "JuchuSuryo"
            ' DataGridViewのヘッダータイトル設定
            textColumn(2).HeaderText = "数量"
            ' DataGridViewセルの文字列右詰め設定
            textColumn(2).DefaultCellStyle.Alignment = _
                DataGridViewContentAlignment.MiddleRight

            ' 【受注単価】列を作成する
            textColumn(3) = New DataGridViewTextBoxColumn()
            ' データソース項目とバインド
            textColumn(3).DataPropertyName = "JuchuTanka"
            ' DataGridViewのヘッダータイトル設定
            textColumn(3).HeaderText = "単価"
            ' DataGridViewセルの文字列右詰め設定
            textColumn(3).DefaultCellStyle.Alignment = _
                DataGridViewContentAlignment.MiddleRight
            ' DataGridViewセルの書式設定
            textColumn(3).DefaultCellStyle.Format = "#,##0"

            ' 【受注金額】列を作成する
            textColumn(4) = New DataGridViewTextBoxColumn()
            ' データソース項目とバインド
            textColumn(4).DataPropertyName = "JuchuKingaku"
            ' DataGridViewのヘッダータイトル設定
            textColumn(4).HeaderText = "金額"
            ' DataGridViewセルの文字列右詰め設定
            textColumn(4).DefaultCellStyle.Alignment = _
                DataGridViewContentAlignment.MiddleRight
            ' DataGridViewセルの書式設定
            textColumn(4).DefaultCellStyle.Format = "#,##0"

            ' 生成列を追加する
            DgvMeisai.Columns.AddRange(textColumn)

            '-----<< BindingSource:データ連結設定 >>-----
            '◆◆bindingSrc.DataSource = meisaiList
            DgvMeisai.DataSource = bindingSrc

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

        End Try

    End Sub

    '*******************************************************
    ' 受注ヘッダー部初期化
    '*******************************************************
    Sub InitialHeader()

        Try
            ' システム日付を受注日にセット
            LblJuchuBi.Text = _
                CStr(ClsHanbaiKanriDBIO.GetSysDate)
            ' ヘッダー部クリア
            TxtJuchuBango.Text = Nothing
            TxtTokuisakiCode.Text = Nothing
            LblTokuisakiMeisho.Text = Nothing
            LblTokuisakiJusho.Text = Nothing
            ' 受注番号にフォーカス
            TxtJuchuBango.Focus()
            ' 得意先コードを入力可能
            TxtTokuisakiCode.Enabled = True
            ' 得意先確定ボタンを押下可能
            BtnTokuisakiKakutei.Enabled = True
            ' 得意先変更ボタンを押下不可
            BtnTokuisakiHenko.Enabled = False

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

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

        End Try

    End Sub

    '*******************************************************
    ' 受注ディテール部初期化
    '*******************************************************
    Sub InitialDetail()

        Try
            ' 受注明細リストクリア
            bindingSrc.Clear()

            ' 受注合計金額クリア
            LblGokeiKingaku.Text = "0"

            ' 明細行クリア
            TxtShohinCode.Text = Nothing
            LblShohinMeisho.Text = Nothing
            NudSuryo.Value = 1
            LblJuchuTanka.Text = Nothing
            lblJuchuKingaku.Text = Nothing

            ' 明細行削除ボタン押下不可
            BtnGyoSakujo.Enabled = False
            ' 明細行変更ボタン押下不可
            BtnGyoHenko.Enabled = False

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

        End Try

    End Sub

End Class

--------------------------------------------------------------------
次号:明細1行分クラスClsInsertDetailRowの実装

====================================================================
VB.NET データベースプログラミング奮闘記
  発行者:ウェブ実験室(adonet~live.jp ~はあっとマーク)
          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」
などホームページに掲載されている会社名・製品名等は、各社の登録商標ま
たは商標です。
====================================================================