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