すぐ使えるADO.NET

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

本の紹介

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

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




【第52号】

 第52号(2007.3.14発行)
======================================================================
           ★★ VB.NETデータベースプログラミング奮闘記 ★★
----------------------------------------------------------------------
いつもご購読ありがとうございます。ADO.NETの基本的なプログラミングを中
心に掲載します。今後ともよろしくお願い申し上げます。

すぐ使えるADO.NET --> サンプルプログラム満載
                      http://park5.wakwak.com/‾weblab/
======================================================================
  ■■ VB2005 Express ワンポイント:暗黙のフォームインスタンス ■■

Visual Basic 2005 Express Edition を試しています。今回は、暗黙のフォー
ムインスタンスについてです。

VB.NETではフォーム変数を宣言して、インスタンスを生成する必要がありまし
たが、VB2005からは、VB6と同様なフォームの使い方が復活しました。

新規プロジェクトに、Form1とForm2を追加します。Form1にButton1(ボタン)
をひとつ追加します。Button1のクリックイベントにForm2.Show()を記述します。
これで、Button1を押下すると、Form2が表示されます。

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

        Form2.Show()

  End Sub

本メールマガジン第29号〜31号のVB.NETによるメニュー画面作成では、各フォー
ムのインスタンスの生成・表示・廃棄までのサンプルがありますが、慣れない
とかなり面倒です。

ただし、この方法は便利な反面、オブジェクト指向プログラミングから見ると、
インスタンスが目に見えないところで作られる、アクセスがどこからもできる
など、必ずしも評判はよくないようです。

しかし、VB6からの移行ならまったく同様なコーディングで済み、たいへん便
利です。


Visual Basic 2005 Express Editionは、こちらから無料でダウンロードする
ことができます。
http://www.microsoft.com/japan/msdn/vstudio/express/

----------------------------------------------------------------------
                   ■■ マスターテーブル保守 6 ■■

今回は、社員マスター照会処理について説明します。このメルマガのマスター
テーブル保守は、テーブルのフィールド数を極端に少ないので、実際の業務に
は使えませんが、プログラムの仕様は、テーブルの大小にかかわらず使えるよ
うになっています。改良して是非業務で使ってみてください。

【社員テーブル】
------------------------------------------------------------
key フィールド名   データ型   サイズ  値要求  空文字列の許可
------------------------------------------------------------
○ 社員コード  テキスト型   5 はい  いいえ
− 社員氏名   テキスト型  20 はい  いいえ
− 社員カナ   テキスト型  40 いいえ はい
− 更新日時   日付/時刻型  − はい  −
------------------------------------------------------------

検索ボタンbtnSelectを押すと、入力された社員コードのレコードを社員テー
ブルから検索して、lblSyainSimeiに社員氏名を、lblSyainKanaに社員カナ名
をセットします。

btnClearを押すと、入力データをクリアして、初期画面に戻します。

┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃ 社員マスタ検索                      _□×┃
┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┃  Label1    txtSyainCode   btnSelect
┃┌―――――┐ ┌―――――┐  ┌―――――┐
┃│社員コード│ │     │  │ 検 索 │
┃└―――――┘ └―――――┘  └―――――┘
┃  Label2    lblSyainSimei
┃┌―――――┐ ┌―――――――――┐
┃│社員氏名 │ │         │
┃└―――――┘ └―――――――――┘
┃  Label3    lblSyainKana
┃┌―――――┐ ┌―――――――――┐
┃│社員カナ │ │         │
┃└―――――┘ └―――――――――┘
┃
┃ btnClear
┃┌―――――┐
┃│ クリア │
┃└―――――┘
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛

フォームクラスの注意点:

処理やフォームが似ているというだけで、他のフォームと共通で利用するよう
仕様はお勧めできません。

処理区分(追加・更新・削除・検索)を判定して、分岐する必要があり、コー
ディングが複雑になるからです。各フォームごとに画面を作り、共通処理はク
ラスとして実装するようにしてください。


'★★ Class kensaku(検索フォーム)は、kensaku.vbファイルにコーディング
'--------- << 社員テーブルの1レコードを検索するクラス >> -------------
Imports System.Data.OleDb

Public Class kensaku
  Inherits System.Windows.Forms.Form

  '自動生成部分は省略

  '-------------------------------------------------------------------
  '             検索ボタン押下
  '-------------------------------------------------------------------
  Private Sub btnKensaku_Click _
  (ByVal sender As System.Object, ByVal e As System.EventArgs) _
  Handles btnKensaku.Click

    Dim dtRec As New DataTable()                        'リターン値
    Dim saveSyainCode As String = Me.txtSyainCode.Text  '社員コード保存

    Try
      Dim oDBIO As New clsDBIO("Read")

      dtRec = oDBIO.getKeyRecord("社員テーブル", Me.txtSyainCode.Text)
      If dtRec.Rows.Count = 1 Then
        'レコード取得成功
        Me.lblSyainSimei.Text = CStr(dtRec.Rows(0)("社員氏名"))
        Me.lblSyainKana.Text = CStr(dtRec.Rows(0)("社員カナ"))

      Else
        '画面初期化
        initForm()
        Me.txtSyainCode.Text = saveSyainCode

        MessageBox.Show _
        ("この社員コードは社員テーブルにありません", "社員コード入力エラー")

      End If

    Catch oExcept As myDBIOException
      '画面初期化
      initForm()
      Me.txtSyainCode.Text = saveSyainCode

      '例外が発生した時の処理(レコード取得エラー)
      MessageBox.Show(oExcept.Message, "例外発生")

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

    End Try

  End Sub

  '-------------------------------------------------------------------
  '             クリアボタン押下
  '-------------------------------------------------------------------
  Private Sub btnClear_Click _
  (ByVal sender As System.Object, ByVal e As System.EventArgs) _
  Handles btnClear.Click

    Me.initForm()   'フォーム初期設定

  End Sub

  '-------------------------------------------------------------------
  '             画面初期化
  '-------------------------------------------------------------------
  Sub initForm()

    '項目初期化
    Me.txtSyainCode.Text = ""
    Me.lblSyainSimei.Text = ""
    Me.lblSyainKana.Text = ""

    '社員コードにフォーカス
    Me.txtSyainCode.Focus()

  End Sub

End Class


他の共通クラスについては、過去の号を参考にしてください。

----------------------------------------------------------------------
              ■■ 次号予告 第53号(4月発行予定) ■■
1. VB2005 Express ワンポイント
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」ホームページに掲載されてい
る会社名・製品名等は、各社の登録商標または商標です。
======================================================================

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