バックナンバー:VB.NETデータベースプログラミング
ADO.NETの基本的なプログラミングを中心に、すぐ使えるサンプルプログラム満載です。
【第28号】
第28号(2005.7.5発行) ====================================================================== ★★ VB.NETデータベースプログラミング奮闘記 ★★ ---------------------------------------------------------------------- いつもご購読ありがとうございます。ADO.NETの基本的なプログラミングを中 心に掲載しますので、今後ともよろしくお願い申し上げます。 すぐ使えるADO.NET --> サンプルプログラム満載 http://park5.wakwak.com/‾weblab/ ====================================================================== ■■ VB.NETワンポイント:文字列から部分的に文字列を削除 ■■ ◆ StringクラスのメソッドRemove(開始位置, 削除文字数)を使うと、指定し た文字列の開始位置から指定文字数を削除することができます。 Dim strBefore1 As String = "Microsoft Visual Basic .NET" Dim strAfter As String strAfter = strBefore1.Remove(0, 10) '注意:先頭のインデックスは0 Console.WriteLine(strAfter) 'strAfter = "Visual Basic .NET" Dim strBefore2 As String = "マイクロソフト" strAfter = strBefore2.Remove(2, 2) Console.WriteLine(strAfter) 'strAfter = "マイソフト" ◆ StringクラスのメソッドReplace(削除する文字列,"")を使うと、検索する 文字列から指定した部分文字列を、空文字列で置き換えることによって、 削除することができます。 strAfter = strBefore1.Replace("Basic", "") Console.WriteLine(strAfter) 'strAfter = "Microsoft Visual .NET" strAfter = strBefore1.Replace(" ", "") Console.WriteLine(strAfter) 'strAfter = "MicrosoftVisualBasic.NET" ◆ StringクラスのメソッドTrimStart、TrimEnd、Trimを使うと、文字列の前 後にある複数の特定文字を削除することができます。 Dim aryChar() As Char = {"A"c, "C"c} '注:文字の時は、末尾にc Dim str1 As String = "AACACCAxyzAC" Dim str2 As String str2 = str1.TrimStart(aryChar) Console.WriteLine(str2) 'str2="xyzAC" str2 = str1.TrimEnd(aryChar) Console.WriteLine(str2) 'str2="AACACCAxyz" str2 = str1.Trim(aryChar) Console.WriteLine(str2) 'str2="xyz" ---------------------------------------------------------------------- ■■ DataTableと各種コントロールをバインドする ■■ DataTableをTextBoxだけではなく、Label、Button、CheckBox、RadioButton等 のコントロールにもバインドすることができます。今回はこれらのコントロー ルのTextプロパティに、社員テーブルのフィールド値を表示するプログラムを 作成します。 使用するテーブルは、sample.mdbの社員テーブルです。 ------------------------------------------------------------ key フィールド名 データ型 サイズ 値要求 空文字列の許可 ------------------------------------------------------------ ○ 社員コード テキスト型 5 はい いいえ − 社員氏名 テキスト型 20 はい いいえ − 社員カナ テキスト型 40 いいえ はい − 部門コード テキスト型 3 はい いいえ − 更新日時 日付/時刻型 − はい − ------------------------------------------------------------ ◆DataTableとコントロールをバインドして、社員テーブルを表示するための プロジェクトを作成します。フォームに下記のようにLabel、Button、 CheckBox、RadioButtonコントロールを貼り付け、図のようにプロパティを設 定します。今回は、DataTableと各コントロールがバインドできることを確か めるテストのため、他のプロパティは既定値のままにしてあります。 btnFirstを押すと、先頭レコードに移動、btnBeforeを押すと、一つ前のレコー ドに移動、btnNextを押すと、次のレコードに移動、btnLastを押すと、最終レ コードに移動します。各ボタンは、表示レコードの位置に応じて、ボタンを押 せないようにします。これは前回と同じです。 StatusBar1には、M/Nの形式で、Mに現レコード位置を、Nには総レコード数を 表示します。これも前回と同じです。 ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ ┃ 各種コントロールとのバインド _□×┃ ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫ ┃ Label1 lblSyainCode ┃┌―――――┐ ┌―――――┐ ┃│社員コード│ │ │ ┃└―――――┘ └―――――┘ ┃ Label2 btnSyainSimei ┃┌―――――┐ ┌――――――――┐ ┃│社員氏名 │ │ │ ┃└―――――┘ └――――――――┘ ┃ Label3 cbxSyainKana rbtSyainKana ┃┌―――――┐ ┌――――――――┐ ┌――――――――┐ ┃│社員カナ │ □│ │ ○│ │ ┃└―――――┘ └――――――――┘ └――――――――┘ ┃ btnFirst btnBefore btnNext btnLast ┃┌―――┐ ┌―――┐ ┌―――┐ ┌―――┐ ┃│ << │ │ < │ │ > │ │ >> │ ┃└―――┘ └―――┘ └―――┘ └―――┘ ┠────────────────────────────────┨ ┃StatusBar1 ┃ ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛ ---------------------------------------------------------------------- フォームロードでは、clsDBIOクラスのgetAllSyainメソッドを使って、社員 テーブルの全レコードを取得し、Label、Button、CheckBox、RadioButtonの各 コントロールにテーブル列を連結します。テキストボックスと同様なコーディ ングで実現できます。 コントロールのDataBindingsプロパティのAdd メソッドに次の引数を指定して 呼び出します。1番目の引数には、各コントロールのTextプロパティ名、2番 目の引数には、データソースであるgetAllSyainの戻り値(DataTable型)、3番 目の引数には、データソースの列名を指定します。 Me.lblSyainCode.DataBindings.Add("Text", oTable, "社員コード") Me.btnSyainSimei.DataBindings.Add("Text", oTable, "社員氏名") Me.cbxSyainKana.DataBindings.Add("Text", oTable, "社員カナ") Me.rbtSyainKana.DataBindings.Add("Text", oTable, "社員カナ") clsDBIOクラスのソースリストは前号と同じです。前号を参照してください。 --【プログラムソースリスト】------------------------------------------ Imports System.Data.OleDb Public Class Form1 Inherits System.Windows.Forms.Form #Region " Windows フォーム デザイナで生成されたコード " '自動生成部分省略 #End Region Private oTable As New DataTable() '----------<< フォームロード処理 >>---------- Private Sub Form1_Load _ (ByVal sender As System.Object, ByVal e As System.EventArgs) _ Handles MyBase.Load Dim oTblSyain As New clsDBIO() oTable = oTblSyain.getAllSyain() '各コントロールにテーブル列を連結 Me.lblSyainCode.DataBindings.Add("Text", oTable, "社員コード") Me.btnSyainSimei.DataBindings.Add("Text", oTable, "社員氏名") Me.cbxSyainKana.DataBindings.Add("Text", oTable, "社員カナ") Me.rbtSyainKana.DataBindings.Add("Text", oTable, "社員カナ") 'カーソル移動ボタン活性不活性設定 Me.setBtnEnable() '現在レコード位置/全レコード数表示 Me.StatusBar1.Text = _ (Me.BindingContext(oTable).Position + 1).ToString() + _ " / " + oTable.Rows.Count.ToString() End Sub '最終レコード位置に移動(以降前号と同じです) Private Sub btnLast_Click( _ ByVal sender As System.Object, ByVal e As System.EventArgs) _ Handles btnLast.Click Me.BindingContext(oTable).Position = oTable.Rows.Count - 1 'カーソル移動ボタン活性不活性設定 Me.setBtnEnable() '現在レコード位置/全レコード数表示 Me.StatusBar1.Text = _ (Me.BindingContext(oTable).Position + 1).ToString() + _ " / " + oTable.Rows.Count.ToString() End Sub '先頭レコード位置に移動 Private Sub btnFirst_Click( _ ByVal sender As System.Object, ByVal e As System.EventArgs) _ Handles btnFirst.Click Me.BindingContext(oTable).Position = 0 'カーソル移動ボタン活性不活性設定 Me.setBtnEnable() '現在レコード位置/全レコード数表示 Me.StatusBar1.Text = _ (Me.BindingContext(oTable).Position + 1).ToString() + _ " / " + oTable.Rows.Count.ToString() End Sub '次のレコード位置に移動 Private Sub btnNext_Click( _ ByVal sender As System.Object, ByVal e As System.EventArgs) _ Handles btnNext.Click Me.BindingContext(oTable).Position += 1 'カーソル移動ボタン活性不活性設定 Me.setBtnEnable() '現在レコード位置/全レコード数表示 Me.StatusBar1.Text = _ (Me.BindingContext(oTable).Position + 1).ToString() + _ " / " + oTable.Rows.Count.ToString() End Sub '前のレコード位置に移動 Private Sub btnBefore_Click( _ ByVal sender As System.Object, ByVal e As System.EventArgs) _ Handles btnBefore.Click Me.BindingContext(oTable).Position -= 1 'カーソル移動ボタン活性不活性設定 Me.setBtnEnable() '現在レコード位置/全レコード数表示 Me.StatusBar1.Text = _ (Me.BindingContext(oTable).Position + 1).ToString() + _ " / " + oTable.Rows.Count.ToString() End Sub 'レコード位置移動ボタン活性不活性設定 Private Sub setBtnEnable() Select Case Me.BindingContext(oTable).Position + 1 'レコード位置 Case 1 '先頭レコード位置の場合 Select Case oTable.Rows.Count Case 1 '1件の場合 Me.btnFirst.Enabled = False Me.btnBefore.Enabled = False Me.btnNext.Enabled = False Me.btnLast.Enabled = False Case Else '2件以上の場合 Me.btnFirst.Enabled = False Me.btnBefore.Enabled = False Me.btnNext.Enabled = True Me.btnLast.Enabled = True End Select Case oTable.Rows.Count '最終レコード位置の場合 Me.btnFirst.Enabled = True Me.btnBefore.Enabled = True Me.btnNext.Enabled = False Me.btnLast.Enabled = False Case Else '中間レコード位置の場合 Me.btnFirst.Enabled = True Me.btnBefore.Enabled = True Me.btnNext.Enabled = True Me.btnLast.Enabled = True End Select End Sub End Class ---------------------------------------------------------------------- ■■ 次号予告 第29号(7月29日発行予定) ■■ 1. VB.NETワンポイント 2. フォームに動的にメニュー項目(ボタンコントロール)を生成する ====================================================================== VB.NET データベースプログラミング奮闘記 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.