バックナンバー:VB.NETデータベースプログラミング
ADO.NETの基本的なプログラミングを中心に、すぐ使えるサンプルプログラム満載です。
【第7号】
第7号(2004.5.31発行)
======================================================================
★★ VB.NETデータベースプログラミング奮闘記 ★★
----------------------------------------------------------------------
ADO.NETの基本的なプログラミングを中心に掲載します。
末永くご購読の程よろしくお願い申し上げます。
すぐ使えるADO.NETの研究 --> サンプルプログラム満載
http://park5.wakwak.com/‾weblab/
======================================================================
★★ VB.NETデータベースプログラミング奮闘記 ★★
----------------------------------------------------------------------
ADO.NETの基本的なプログラミングを中心に掲載します。
末永くご購読の程よろしくお願い申し上げます。
すぐ使えるADO.NETの研究 --> サンプルプログラム満載
http://park5.wakwak.com/‾weblab/
======================================================================
-----【目次】-----
1. VB.NETワンポイント:リストボックスにItems.Addで項目追加
2. ListBoxに表示した部門名から選択した部門名の部門コードを取得
3. VB.NETワンポイントオブジェクト指向:コントロールの動的生成
4. 次号予告
----------------------------------------------------------------------
■■ VB.NETワンポイント:リストボックスにItems.Addで項目追加 ■■
デザイン時に、Itemsプロパティを使って、項目を追加することができますが、
今回は、リストボックスのItems.Addメソッドを使って、元号名をリストボッ
クスに表示して、その中のひとつを選択できるようにします。
SelectionModeプロパティに、SelectionMode.Oneを設定すると、ひとつのみ
選択できるようになります。
SelectionMode.MultiExtendedを設定すると、Shiftキー・Ctrlキー・
方向キー・マウスクリックで、複数の項目を選択できます。
SelectionMode.MultiSimpleを設定すると、マウスクリック・Spaceキーで、
複数の項目を選択できます。
項目を選択すると、SelectedIndexプロパティが設定されます。先頭項目を選
択すると、0になり、以下順次1, 2, 3, ・・・となります。項目を選択してい
ないときは、-1になります。
Private Sub Form1_Load(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles MyBase.Load
'ひとつのみ選択可能
Me.ListBox1.SelectionMode = SelectionMode.One
'項目の追加
Me.ListBox1.Items.Add("明治")
Me.ListBox1.Items.Add("大正")
Me.ListBox1.Items.Add("昭和")
Me.ListBox1.Items.Add("平成")
'平成を既定値として選択
Me.ListBox1.SetSelected(3, True)
End Sub
----------------------------------------------------------------------
■■ ListBoxに表示した部門名から選択した部門名の部門コードを取得 ■■
今回はWindows版を、次回はWebForm版を予定しています。
リストボックスListBox1に、部門テーブルの全部門名を表示する。表示した部
門名をひとつのみ選択できるようにする。部門名をクリックしたら、その部門
コードをラベルlblBumonCodeに表示する。
部門テーブルは、sample.mdbに次のように作成してあります。
key フィールド名 データ型 サイズ 値要求 空文字列の許可
------------------------------------------------------------
● 部門コード テキスト型 3 はい いいえ
− 部門名 テキスト型 20 はい いいえ
− 更新日時 日付/時刻型 − はい −
最初に、新規プロジェクトをひとつ作成してください。ツールボックスから、
次のコントロールを貼り付け、プロパティを設定します。
┏━━━━━━━━━━━━━━━━━━━┓
┃ ListBox1 Label1
┃┌―――――┐ ┌―――――┐
┃│ │ │部門コード│
┃│ │ └―――――┘
┃│ │
┃│ │ lblBumonCode
┃│ │ ┌――――┐
┃└―――――┘ └――――┘
┗━━━━━━━━━━━━━━━━━━━┛
コントロール プロパティ 設定値
--------------------------------------------
ListBox1 --- ---
Label1 Text 部門コード
lblBumonCode Text ""
リストボックスに、部門テーブルの全部門名を表示するために、DataAdapter
オブジェクトのFillメソッドを使います。
まず、DataAdapterオブジェクトとDataSetオブジェクトを生成します。引数に、
DataSetオブジェクトとテーブル名を指定して、Fillメソッドを呼び出します。
Dim oDataAdapter As New OleDbDataAdapter()
Dim oDataSet As New DataSet()
oDataAdapter.Fill(oDataSet, "部門テーブル")
リストボックスに部門名を表示するために、DisplayMemberプロパティに
"部門名"を設定します。選択した部門のコードを取得するためには、
ValueMemberプロパティに"部門コード"を設定します。そして、DataSource
プロパティに、データセットに格納されている"部門テーブル"を設定します。
ListBox1.DisplayMember = "部門名"
ListBox1.ValueMember = "部門コード"
ListBox1.DataSource = oDataSet.Tables("部門テーブル")
これで、リストボックスに表示した部門名をクリックすると、その部門コード
を取得することができます。
部門名をクリックして選択すると、SelectedIndexChangedイベントが発生しま
すので、そのイベントハンドラの中で、リストボックスのSelectedValueプロ
パティを参照すると、クリックした部門名の部門コードを取得できます。
今回はラベルに部門コードを表示して、正しく部門コードが取得されたことを
確認しています。では、プログラムソースリストを掲載します。
--【プログラムソースリスト】------------------------------------------
Option Strict On
Imports System.Data.OleDb
Public Class Form1
Inherits System.Windows.Forms.Form
#Region " Windows フォーム デザイナで生成されたコード "
'自動生成部分省略
#End Region
Private oDataAdapter As New OleDbDataAdapter()
Private oDataSet As New DataSet()
Private Sub Form1_Load(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles MyBase.Load
Dim oConn As New OleDbConnection()
Dim oCommand As New OleDbCommand()
Try
'DB接続文字列の設定
'注:プロジェクトファイルホルダの下にあるbinホルダにMDBを置く
oConn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" + _
" Data Source=" + Application.StartupPath + "¥sample.mdb"
'コネクションの設定
oCommand.Connection = oConn
'DB接続を開く
oConn.Open()
'SQL文の設定
Const strSelect As String = "SELECT 部門コード, 部門名 " + _
"FROM 部門テーブル ORDER BY 部門コード"
oCommand.CommandText = strSelect
'データを取得する
oDataAdapter.SelectCommand = oCommand
oDataAdapter.Fill(oDataSet, "部門テーブル")
'リストボックスに部門名を表示する設定
Me.ListBox1.DisplayMember = "部門名"
'部門名に対応した部門コードを取得できるようにする設定
ListBox1.ValueMember = "部門コード"
'データ連結を行なう
Me.ListBox1.DataSource = oDataSet.Tables("部門テーブル")
Catch oExcept As Exception
'例外が発生した時の処理
MessageBox.Show(oExcept.Message, "エラー")
Finally
'DB接続を閉じる
If Not oConn Is Nothing Then
oConn.Close()
End If
End Try
End Sub
Private Sub ListBox1_SelectedIndexChanged( _
ByVal sender As System.Object, ByVal e As System.EventArgs) _
Handles ListBox1.SelectedIndexChanged
'選択した部門コードをラベルに表示
Me.lblBumonCode.Text = CStr(Me.ListBox1.SelectedValue)
End Sub
End Class
----------------------------------------------------------------------
■■ VB.NETワンポイントオブジェクト指向:コントロールの動的生成 ■■
動的にリストボックス等のコントロールを生成することができます。下記サン
プルを参考にして、様々なコントロールを動的に生成してみましょう。
#Region" Windows フォーム デザイナで生成されたコード " 〜 #End Region
内のコードが参考になります。
Private Sub Form1_Load
'----- ListBox2をForm1_Loadで動的に生成 -----
'リストボックスのインスタンスを生成
Dim ListBox2 As ListBox = New ListBox()
'リストボックスのプロパティ設定
ListBox2.ItemHeight = 12
ListBox2.Location = New System.Drawing.Point(136, 12)
ListBox2.Name = "ListBox2"
ListBox2.Size = New System.Drawing.Size(80, 124)
ListBox2.TabIndex = 0
'フォームに追加
Me.Controls.Add(ListBox2)
End Sub
----------------------------------------------------------------------
■■ 次号予告 ■■
第8号(6月11日発行予定) 月3回位発行予定
1. VB.NETワンポイント
2. ListBoxに表示した部門名から選択した部門名の部門コードを取得
◆ webForm版 ◆
======================================================================
VB.NET データベースプログラミング奮闘記 第7号(2004.5.31)
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の研究ホームページに掲載され
ている会社名・製品名等は、各社の登録商標または商標です。
======================================================================
↑このページ(メルマガ:VB.NETデータベース) 先頭へ | すぐ使えるADO.NET ホームへ
Copyright© すぐ使えるADO.NET. All rights reserved.