すぐ使えるADO.NET

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

本の紹介

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

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




【第10号】

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

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

すぐ使えるADO.NET --> サンプルプログラム満載
                      http://park5.wakwak.com/‾weblab/
======================================================================
                        -----【目次】-----

1. VB.NETワンポイント:文字列の前後のスペースを除去
2. 部門単位で自動連番を生成するクラスの作成1
3. 次号予告

----------------------------------------------------------------------
      ■■ VB.NETワンポイント:文字列の前後のスペースを除去 ■■

文字列の前後のスペースを除去する関数を紹介します。

  Dim str1 As String = "  -123- "
  Dim str2 As String

とします。

◆LTrim関数:
  引数に指定した文字列の前にあるスペースを除いた文字列を返します。
  str2 = "-123- " になります。

  str2 = LTrim(str1)
  Trace.WriteLine("LTrim:str2 = [" + str2 + "]")

◆RTrim関数:
  引数に指定した文字列の後にあるスペースを除いた文字列を返します。
  str2 = "  -123-" になります。

  str2 = RTrim(str1)
  Trace.WriteLine("RTrim:str2 = [" + str2 + "]")

◆Trim関数:
  引数に指定した文字列の前後にあるスペースを除いた文字列を返します。
  str2 = "-123-" になります。

  str2 = Trim(str1)
  Trace.WriteLine("Trim:str2 = [" + str2 + "]")

Stringクラスにも同様なメソッドTrimStart、TrimEnd、Trimがあります。

◆TrimStartメソッド:
  LTrim(str1)と同機能です。str2 = "-123- " になります。

  str2 = str1.TrimStart

◆TrimEndメソッド:
  RTrim(str1)と同機能です。str2 = "  -123-" になります。

  str2 = str1.TrimEnd

◆Trimメソッド:
  Trim(str1)と同機能です。 str2 = "-123-" になります。

  str2 = str1.Trim

TrimStart、TrimEnd、Trimの各メソッドは、複数の特定文字を削除することも
できます。ひとつ例を挙げておきます。

  Dim aryChar() As Char = {"A"c, "C"c}     '注:文字の時は、末尾にc
  str1 = "AAACCXYZ  "
  str2 = str1.TrimStart(aryChar)

とすると、str2 = "XYZ  " になります。

----------------------------------------------------------------------
         ■■ 部門単位で自動連番を生成するクラスの作成1 ■■

部門コードに5桁番号を連結して返すメソッドを含むクラスを考えます。
部門コードは、クラスオブジェクト生成時に引数として渡します。5桁番号は、
sample.mdbの連番生成テーブルに持つことにします。テーブルは次のように定
義します。

key フィールド名   データ型    サイズ  値要求  空文字列の許可
--------------------------------------------------------------
◎ 部門コード  テキスト型    3 はい  いいえ
− 連番     数値型    整数型 はい  −
− 更新日時   日付/時刻型   − はい  −

注意1:テーブル名・フィールド名は、必要なら英数字に変更して下さい

キー値にない部門コードを引数に指定した時は、新規にレコードを追加しま
す。部門コードはエラーチェック済みであるという前提で考えますので、省
略しています。桁あふれは考慮していません。

クラスのデータメンバを紹介します。クラス名は、clsSequenceNumとします。

●部門コード変数:
  クラス内のみで使用します。Private mBumonCode As String とします。

●コンストラクタ:
  部門コードを引数に指定します。引数の値を、mBumonCodeに設定します。
  部門コードのレコードの存在をexistBumonメソッドで調べます。レコードが
  なければ、createSequenceNumメソッドを呼び出し、連番フィールドを0で初
  期化して、1レコード追加します。

●existBumonメソッド:
  部門コードのレコードが連番生成テーブルに存在するか否かを調べるメソッ
  ドです。コンストラクタの中でしか呼び出されませんので、Privateにしま
  す。

●createSequenceNumメソッド:
  連番生成テーブルに1レコードを登録するメソッドです。コンストラクタの
  中でしか呼び出されませんので、Privateにします。

●getSequenceNumメソッド:
  連番生成テーブルから連番を取得するメソッドです。外部から呼び出されま
  すので、Publicにします。戻値は、文字列にします。連番を00123とすれば、
  部門コード="001"の時、戻値は"00100123"になります。
  部門コード="A01"の時、戻値は"A0100123"になります。


では、クラスをテストするための新規プロジェクトをひとつ作成します。
ツールボックスから、次のコントロールを貼り付け、プロパティを設定します。

┏━━━━━━━━━━━━━━━━━━━━━━━┓
┃   TextBox1        Button1        Label1
┃┌―――――┐  ┌――――┐  ┌―――――┐
┃└―――――┘  │連番取得│  └―――――┘
┃         └――――┘
┃
┗━━━━━━━━━━━━━━━━━━━━━━━┛

   コントロール    プロパティ    設定値
 ----------------------------------------------
   TextBox1        Text          ""
                   BorderStyle   Fixed3D
   Button1         Text          連番取得
   Label1          Text          ""
                   BorderStyle   FixedSingle

TextBox1に、部門コードを入力し、Button1を押すと、Label1に取得した番号が
表示されます。Button1を続けて押すと、Label1の連番部分が+1されて表示さ
れるのが確認できます。

連番の生成は、クラスfrmSequenceNum内で例外をThrowしますので、
Try 〜 Catch 〜 End Tryブロックで囲みます。

今回は、クラスをテストするプログラムソースリストを掲載します。
連番生成クラスのソースリストは、次号からの掲載となります。
ご了承ください。

--【プログラムソースリスト】------------------------------------------
Imports System.Data.OleDb

Public Class frmSequenceNum
  Inherits System.Windows.Forms.Form

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

  Private Sub Button1_Click(ByVal sender As System.Object, _
                 ByVal e As System.EventArgs) Handles Button1.Click

    Dim oRenban As clsSequenceNum
    Dim bumonCode As String
    Dim strSequenceNum As String

    Try
      bumonCode = Me.TextBox1.Text

      oRenban = New clsSequenceNum(bumonCode)
      strSequenceNum = oRenban.getSequenceNum()
      If strSequenceNum = "" Then
        MessageBox.Show("連番が取得できませんでした", "エラー")
      Else
        Me.Label1.Text = strSequenceNum
      End If

    Catch oExcept As Exception
      '例外が発生した時の処理
      MessageBox.Show(oExcept.Message, "エラー")

    End Try

  End Sub

End Class

----------------------------------------------------------------------
            ■■ 次号予告:第11号(7月23日頃発行予定) ■■

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

======================================================================
VB.NET データベースプログラミング奮闘記    第10号(2004.7.9)
          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.