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

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

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

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

フォームはこちら↓(一部名称の変更やコントロ-ルの追加があります)
  http://adonetvb.com/OrderEntry/index.html


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

--------------------------------------------------------------------
                   ■ DataGridViewの列スタイル ■

今号では、データグリッドビューの列スタイルを設定します。入力した明細
行を表示するデータグリッドビューの列スタイルは、フォームロードで設定
します。

まず、列が自動的に作成されないように、
  DgvMeisai.AutoGenerateColumns = False
とします。こうすると、DataSourceプロパティに設定したデータを、自由に
表示できようになります。

また、明細行に商品コード、商品名、数量、単価、金額を表示するので、別
途、明細行基本クラスClsDetailRowBaseにプロパティを実装する必要があり
ます。ClsDetailRowBaseは次号以降に実装します。

それでは、列をカスタマイズしていきます。

列幅は、セルの値に合わせて幅を自動的に調整できるように、
AutoSizeColumnsModeプロパティに 
  DataGridViewAutoSizeColumnsMode.AllCells
をセットします。

データグリッドビューの列として、商品コード、商品名、数量、単価、金額
を追加する必要があるので、DataGridViewTextBoxColumnを5列宣言します。
  Dim textColumn(4) As DataGridViewTextBoxColumn

商品コード列 textColumn(0)から、順次インスタンスを生成して、列スタイ
ルを設定します。
  textColumn(0) = New DataGridViewTextBoxColumn()

商品コードを表示するためには、DataPropertyNameプロパティに、バインド
するプロパティ名をセットします。
  textColumn(0).DataPropertyName = "ShohinCode"
ShohinCodeは、明細行基本クラスClsDetailRowBaseに実装します。

列タイトルはHeaderTextプロパティに設定します。
  textColumn(0).HeaderText = "商品コード"

以下同様に他の列も作成します。

数値項目は、カンマ右詰め表示するので、DefaultCellStyle の Alignment
プロパティに、DataGridViewContentAlignment.MiddleRightを設定し、
Formatプロパティに、カスタム数値書式指定文字列 "#,##0" を設定します。


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

    '*******************************************************
    ' データグリッドビュー初期化
    '*******************************************************
    Sub InitialDgvDesign()

        Try
            '---<< データグリッドビュー列スタイル設定 >>---
            ' 列を自動生成しない
            Me.DgvMeisai.AutoGenerateColumns = False
            ' 列幅を自動調整
            Me.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:データ連結設定 >>---
            ' 以下2行はとりあえずコメントアウト
            'bindingSrc.DataSource = meisaiList
            'Me.DgvMeisai.DataSource = bindingSrc

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

        End Try

    End Sub


--------------------------------------------------------------------
次号:フォームロードの実装

====================================================================
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」
などホームページに掲載されている会社名・製品名等は、各社の登録商標ま
たは商標です。
====================================================================