すぐ使えるADO.NET

【Visual BasicによるADO.NETデータベースプログラミング】

本の紹介

バックナンバー:VB.NETデータベースプログラミング

ADO.NETの基本的なプログラミングを中心に、すぐ使えるサンプルプログラム満載です。




【第9号】

 第9号(2004.6.25発行)
======================================================================
           ★★ VB.NETデータベースプログラミング奮闘記 ★★

----------------------------------------------------------------------
ADO.NETの基本的なプログラミングを中心に掲載します。
末永くご購読の程よろしくお願い申し上げます。

すぐ使えるADO.NET --> サンプル満載 http://park5.wakwak.com/‾weblab/
======================================================================

  -----【目次】-----

1. VB.NETワンポイント:Property・Get・Set
2. ListBox:DataSourceにArrayListオブジェクトを設定して名称表示
3. 次号予告

----------------------------------------------------------------------
           ■■ VB.NETワンポイント:Property・Get・Set ■■

Privateな変数mCodeと、その変数に値を設定するコンストラクタ、mCodeの値
を取得するgetCodeメソッド、mCodeの値を変更するsetCodeメソッドを持った
クラスclsSample1を作成します。

  Public Class clsSample1

    Private mCode As String

    Public Sub New(ByVal paraCode As String)
        mCode = paraCode
    End Sub

    Public Function getCode() As String
        Return mCode
    End Function

    Public Sub setCode(ByVal paraCode As String)
        mCode = paraCode
    End Sub

  End Class

mCodeの値の設定はコンストラクタで行います。

  Dim obj1 As New clsSample1("abc")

getCodeメソッドで、設定した値を取得します。

  Trace.WriteLine("設定値確認:clsSample1のmCode = " + obj1.getCode())

値の変更はsetCodeメソッドを使います。

  obj1.setCode("12345")

getCodeメソッドで変更値を確認しています。

  Trace.WriteLine("変更値確認:clsSample1のmCode = " + obj1.getCode())

VB.NETでは、getCodeメソッド、setCodeメソッドと同様な動作を、Property
ステートメント、Getプロパティプロシージャ、Setプロパティプロシージャを
使って実現することができます。クラスclsSample2は、クラスclsSample1を書
き換えたクラスです。

  Public Class clsSample2

    Private mCode As String

    Public Sub New(ByVal paraCode As String)
        mCode = paraCode
    End Sub

    Public Property code() As String
        Get
            Return mCode
        End Get

        Set(ByVal paraCode As String)
            mCode = paraCode
        End Set
    End Property

  End Class

mCodeの値の設定は、Getプロパティプロシージャを呼び出し、値の変更は、
Setプロパティプロシージャを呼び出します。記述はドット演算子を使って、
obj2.codeのようにします。

  Dim obj2 As New clsSample2("abc")
  Trace.WriteLine("設定値確認:clsSample2のmCode = " + obj2.code)

  obj2.code = "12345"
  Trace.WriteLine("変更値確認:clsSample2のmCode = " + obj2.code)

----------------------------------------------------------------------
■■ ListBox:DataSourceにArrayListオブジェクトを設定して名称表示 ■■

リストボックスListBox1に、すべての元号名を表示する。表示した元号名をひ
とつ選択できるようにする。元号名をクリックしたら、その元号コードをラベ
ルlblgengoCodeに表示する。下表の元号コードと元号名をプログラム内で、
ArrayListオブジェクトに登録する。

  元号コード 元号名
 ---------------------
     1        明治
     2        大正
     3        昭和
     4        平成

最初に、新規プロジェクトをひとつ作成してください。ツールボックスから、
次のコントロールを貼り付け、プロパティを設定します。

┏━━━━━━━━━━━━━━━━━━━┓
┃   ListBox1       Label1
┃┌―――――┐ ┌―――――┐
┃│     │ │元号コード│
┃│     │ └―――――┘
┃│     │  lblgengoCode
┃│     │  ┌――――┐
┃└―――――┘  └――――┘
┗━━━━━━━━━━━━━━━━━━━┛

   コントロール    プロパティ   設定値
 --------------------------------------------
   ListBox1        ---          ---
   Label1          Text         元号コード
   lblgengoCode    Text         ""
                   BorderStyle  FixedSingle

前号では、リストボックスに名称を表示するために、DataAdapterオブジェク
トのFillメソッドを使って、DataSourceプロパティにデータセットを設定しま
したが、今回は、DataSourceプロパティにArrayListオブジェクトを設定しま
す。

まず、元号コードと元号名を登録するクラスclsGengoを作成します。元号コー
ドと元号名は、コンストラクタで設定します。リストボックスに元号名を表示
するためにプロパティgengoNameを、選択した元号の元号コードを取得するた
めにプロパティgengoCodeを定義します。いずれのプロパティも読取専用とし
て、ReadOnlyキーワードを付け、Getプロパティプロシージャのみ定義します。

  Public ReadOnly Property gengoCode() As String
    Get
      Return mGengoCode
    End Get
  End Property

リストボックスには、元号名を表示するために、DisplayMemberプロパティに、
クラスclsGengoのプロパティ名"gengoCode"を、選択した元号の元号コードを
取得するために、ValueMemberプロパティにクラスclsGengoのプロパティ名
"gengoCode"を設定します。また、DataSourceプロパティには、ArrayListオブ
ジェクトを設定します。

    Me.ListBox1.DisplayMember = "gengoName"
    Me.ListBox1.ValueMember = "gengoCode"
    Me.ListBox1.DataSource = gengoList

SelectedIndexChangedイベントハンドラの中で、リストボックスの
SelectedValueプロパティを参照すれば、クリックした元号名の元号コードを
取得することができます。

それでは、プログラムソースリストを掲載します。Option Strict Onにしてい
ますので、異なるデータ型への代入には、注意して下さい。たとえば、

  Me.lblgengoCode.Text = Me.ListBox1.SelectedValue は、
  Me.lblgengoCode.Text = CStr(Me.ListBox1.SelectedValue)

とします。

--【プログラムソースリスト】------------------------------------------

Option Strict On

Public Class form1
  Inherits System.Windows.Forms.Form

#Region " Windows フォーム デザイナで生成されたコード "
  '自動生成部分省略
#End Region

  Private Sub form1_Load(ByVal sender As System.Object, _
                     ByVal e As System.EventArgs) Handles MyBase.Load

    '元号コードと元号名を登録するArrayListを宣言
    Dim gengoList As New ArrayList()

    'ArrayListに元号コードと元号名称を追加
    gengoList.Add(New clsGengo("1", "明治"))
    gengoList.Add(New clsGengo("2", "大正"))
    gengoList.Add(New clsGengo("3", "昭和"))
    gengoList.Add(New clsGengo("4", "平成"))

    'リストボックスに名称を表示できるようにする
    Me.ListBox1.DisplayMember = "gengoName"

    'リストボックスで選択した名称に対応したコードを取得できるようにする
    Me.ListBox1.ValueMember = "gengoCode"

    'リストボックスとArrayListデータを連結する
    Me.ListBox1.DataSource = gengoList

    '平成を既定値として選択
    Me.ListBox1.SetSelected(3, True)

  End Sub

  Private Sub ListBox1_SelectedIndexChanged _
     (ByVal sender As System.Object, ByVal e As System.EventArgs) _
                                Handles ListBox1.SelectedIndexChanged

    '選択した元号コードをラベルに表示
    Me.lblgengoCode.Text = CStr(Me.ListBox1.SelectedValue)

  End Sub

End Class

'----------【元号コードと元号名を登録するクラス】----------
Public Class clsGengo

  Private mGengoCode As String
  Private mGengoName As String

  Public Sub New(ByVal gengoCode As String, ByVal gengoName As String)

    mGengoCode = gengoCode
    mGengoName = gengoName

  End Sub

  Public ReadOnly Property gengoCode() As String
    Get
      Return mGengoCode
    End Get
  End Property

  Public ReadOnly Property gengoName() As String
    Get
      Return mGengoName
    End Get
  End Property

End Class

----------------------------------------------------------------------
                      ■■ 次号予告 ■■

第10号(7月9日頃発行予定)

1. VB.NETワンポイント
2. 部門単位で自動連番を生成するクラスの作成

======================================================================
VB.NET データベースプログラミング奮闘記    第9号(2004.6.25)
          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」ホームページで公開してい
るソースプログラム・データの利用により生じた損害等については、発行者は
一切責任を負いません。
ソースプログラムの再利用は自由です。著作権は発行者が所有します。
このメールマガジン及び、「すぐ使えるADO.NET」ホームページに掲載されて
いる会社名・製品名等は、各社の登録商標または商標です。
======================================================================

Copyright© すぐ使えるADO.NET. All rights reserved.