バックナンバー: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」ホームページに掲載されてい
る会社名・製品名等は、各社の登録商標または商標です。
======================================================================
↑このページ(メルマガ:VB.NETデータベース) 先頭へ | すぐ使えるADO.NET ホームへ
Copyright© すぐ使えるADO.NET. All rights reserved.