バックナンバー: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.