ソース掲示板




すべてから検索

キーワード   条件 表示 現行ログ 過去ログ トピックス 名前 本文
【VB.NET】社員マスタメンテ、変更仕様と手順 ( バージョン4モード )
日時: 2013/05/01 23:25
名前: lightbox



バージョン4
http://lightbox.on.coocan.jp/r205/2008/DB_ACCESS_CLASS_04.lzh


拡張子:
ここでのコンセプトは、外部メソッドを使用してソースコードを
できる限りシンプルに整理する事です。
メンテナンス

Partial Class を使用して、イベント処理を別ファイルにする ( No.1 )
日時: 2008/07/06 12:33
名前: lightbox


日時: 2008/07/06 12:33
名前: lightbox
拡張子:
ソリューションエクスプローラより、社員マスタメンテ_部品 というディレクトリ作成して、
第二会話移動.vb というクラスファイルを作成する

Public Class 第二会話移動Partial Class 社員マスタメンテ とし、確認_Click の処理を移動する

同様にして、以下の処理を行う

社員マスタメンテ_部品ディレクトリ内に、以下の3つのクラスファイルを作成

1) 更新処理.vb 
2) メインメニュー.vb
3) 管理者処理.vb

それぞれを、Partial Class 社員マスタメンテ に変更する

1) に更新_Click を移動する
2) にメニューからのイベントを移動する
3) にValidate の処理二つを移動する
このアーティクルの参照用URLをクリップボードにコピー メンテナンス
機能に関係の無い部分を整理する ( No.2 )
日時: 2008/07/06 10:46
名前: lightbox
● テストを重視する為に、処理区分の修正をデフォルトにする
拡張子:
' 処理区分を修正モードで選択する
Me.処理区分.SelectByValue("2")
場所 : MyBase.Load ● 一括プロテクト処理と一括クリア処理を LboxText のクラス変数に変更する
拡張子:
一括プロテクト処理と一括クリア処理は、lightbox.control に依存する処理なので
コントロール側が持つメソッドを使用する
1) Imports lightbox.control を追加 2) LboxText.Protect と LboxText.ClearField を使用する
拡張子:
拡張子:
LboxText.Protect(Me, 2, True)
LboxText.Protect(Me, 3, True)
場所 : MyBase.Load
拡張子:
(新規・修正)
拡張子:
LboxText.Protect(Me, 1, True)
LboxText.Protect(Me, 2, False)
LboxText.Protect(Me, 3, False)
(削除)
拡張子:
LboxText.Protect(Me, 1, True)
LboxText.Protect(Me, 2, True)
LboxText.Protect(Me, 3, False)
場所 : 確認.Click
拡張子:
拡張子:
LboxText.Protect(Me, 2, True)
LboxText.Protect(Me, 3, True)

LboxText.Protect(Me, 1, False)

LboxText.ClearField(Me, 2)
場所 : キャンセル.Click
● エラーメッセージの表示を LboxText の クラスメソッドで行う
拡張子:
MessageBox.Show で記述すると煩雑になるので、簡素化の為
拡張子:
( フォーカスを必要としない例 )
拡張子:
' ************************
' 接続
' ************************
If Not db.Connect() Then
	LboxText.MessageError("DB接続に失敗しました")
	Return
End If
場所 : MyBase.Load
拡張子:
( フォーカスを必要とする例 )
拡張子:
If Me.社員コード.InnerText.Trim() = "" Then
	LboxText.MessageError("必須入力です", Me.社員コード)
	Return
End If
場所 : 確認_Click
上記以外にも下記の場所を変更 更新_Click 管理者_Validating ※ データベース更新時のエラーでは、エラー内容を表示するように変更します
拡張子:
LboxText.MessageError("データベースの更新に失敗しました:" + db.myError)
このアーティクルの参照用URLをクリップボードにコピー メンテナンス
select 文を DbHelper のクラスメソッドを使用して外部ファイルより読み出す ( No.3 )
日時: 2008/07/06 11:32
名前: lightbox
● ソリューションエクスプローラよりデータディレクトリを作成
拡張子:
以下のテキストファイルを作成

性別コンボ.sql
所属コンボ.sql
メイン読出.sql
拡張子:
( このメソッドは、テキストファイル内の文字列は変更しません )
拡張子:
' ************************
' 性別コンボボックス
' ************************
db.Query(DbHelper.GetSql("..\..\データ\性別コンボ.sql"))
Do While db.Read()
	' DB よりデータセット
	Me.性別.Add(db.GetValue("名称"), db.GetValue("コード"))
Loop
Me.性別.SelectedIndex = -1

' ************************
' 所属コンボボックス
' ************************
db.Query(DbHelper.GetSql("..\..\データ\所属コンボ.sql"))
Do While db.Read()
	' DB よりデータセット
	Me.所属.Add(db.GetValue("名称"), db.GetValue("コード"))
Loop
Me.所属.SelectedIndex = -1
場所 : MyBase.Load
拡張子:
メイン読出.sql
拡張子:
select {1}.社員コード
	,{1}.氏名
	,{1}.フリガナ
	,{1}.所属
	,{1}.性別
	,{1}.作成日
	,{1}.更新日
	,{1}.給与
	,{1}.手当
	,{1}.管理者
	,管理者参照.氏名 as 管理者名
	,{1}.生年月日 
 from {1}
 left outer join {1} 管理者参照
 on {1}.管理者 = 管理者参照.社員コード 
 where {1}.社員コード = {0}
( このメソッドは、テキストファイル内の文字列を変更します )
拡張子:
' ******************************************************
' select 文を外部ファイルより読み出す
' ******************************************************
DbHelper.dic.Clear()
DbHelper.dic.Add(0, Me.社員コード.DbText)
DbHelper.dic.Add(1, "社員マスタ")
Dim Query = DbHelper.GetSqlDic("..\..\データ\メイン読出.sql")
場所 : 確認.Click
このアーティクルの参照用URLをクリップボードにコピー メンテナンス
各コントロールの DbText プロパティを使用して、更新 SQLをシンプルにする ( No.4 )
日時: 2008/07/06 12:09
名前: lightbox
拡張子:
DbText プロパティは、SQL を作る為の文字列が最適化されています。
1) DbType プロパティの指定により、シングルクォートの必要・不必要を判断
2) データが無い場合は、NULL またはデフォルト値をセット
( デフォルトは、DbDefault プロパティで設定し、使うかどうかは DbType プロパティの指定で決まる )
新規:変更前
拡張子:
Query = "insert into 社員マスタ ("
Query += "社員コード,氏名,フリガナ,所属,性別,作成日"
Query += ",更新日,給与,手当,管理者,生年月日) values("
Query += "'" + Me.社員コード.InnerText + "'"
Query += ",'" + Me.氏名.InnerText + "'"
If (Me.フリガナ.InnerText).Trim() = "" Then
	Query += ",NULL"
Else
	Query += ",'" + Me.フリガナ.InnerText + "'"
End If
If Me.所属.SelectedIndex = -1 Then
	Query += ",NULL"
Else
	Query += ",'" + Me.所属.SelectedValue + "'"
End If
Query += "," + Me.性別.SelectedValue
Query += ",Now"
Query += ",Now"
If (Me.給与.InnerText).Trim() = "" Then
	Query += ",NULL"
Else
	Query += "," + Me.給与.InnerText
End If
If (Me.手当.InnerText).Trim() = "" Then
	Query += ",NULL"
Else
	Query += "," + Me.手当.InnerText
End If
If (Me.管理者.InnerText).Trim() = "" Then
	Query += ",NULL"
Else
	Query += ",'" + Me.管理者.InnerText + "'"
End If
If (Me.生年月日.InnerText).Trim() = "" Then
	Query += ",NULL"
Else
	Query += ",'" + Me.生年月日.InnerText + "'"
End If
Query += ")"
新規:変更後
拡張子:
Query = "insert into 社員マスタ ("
Query += "社員コード,氏名,フリガナ,所属,性別,作成日"
Query += ",更新日,給与,手当,管理者,生年月日) values("
Query += Me.社員コード.DbText
Query += "," + Me.氏名.DbText
Query += "," + Me.フリガナ.DbText
Query += "," + Me.所属.DbText
Query += "," + Me.性別.DbText
Query += ",Now"
Query += ",Now"
Query += "," + Me.給与.DbText
Query += "," + Me.手当.DbText
Query += "," + Me.管理者.DbText
Query += "," + Me.生年月日.DbText
Query += ")"
修正:変更前
拡張子:
Query = "update 社員マスタ set "
Query += " 氏名 = '" + Me.氏名.InnerText + "'"
If (Me.フリガナ.InnerText).Trim() = "" Then
	Query += " ,フリガナ = NULL"
Else
	Query += " ,フリガナ = '" + Me.フリガナ.InnerText + "'"
End If
If Me.所属.SelectedIndex = -1 Then
	Query += " ,NULL"
Else
	Query += " ,所属 = '" + Me.所属.SelectedValue + "'"
End If
Query += " ,性別 = " + Me.性別.SelectedValue
Query += " ,更新日 = Now"
If (Me.給与.InnerText).Trim() = "" Then
	Query += " ,給与 = NULL"
Else
	Query += " ,給与 = " + Me.給与.InnerText
End If
If (Me.手当.InnerText).Trim() = "" Then
	Query += " ,手当 = NULL"
Else
	Query += " ,手当 = " + Me.手当.InnerText
End If
If (Me.管理者.InnerText).Trim() = "" Then
	Query += " ,管理者 = NULL"
Else
	Query += " ,管理者 = '" + Me.管理者.InnerText + "'"
End If
If (Me.生年月日.InnerText).Trim() = "" Then
	Query += " ,生年月日 = NULL"
Else
	Query += " ,生年月日 = '" + Me.生年月日.InnerText + "'"
End If
Query += " where 社員コード = '" + Me.社員コード.InnerText + "'"
修正:変更後
拡張子:
Query = "update 社員マスタ set "
Query += " 氏名 = " + Me.氏名.DbText
Query += " ,フリガナ = " + Me.フリガナ.DbText
Query += " ,所属 = " + Me.所属.DbText
Query += " ,性別 = " + Me.性別.DbText
Query += " ,更新日 = Now"
Query += " ,給与 = " + Me.給与.DbText
Query += " ,手当 = " + Me.手当.DbText
Query += " ,管理者 = " + Me.管理者.DbText
Query += " ,生年月日 = " + Me.生年月日.DbText
Query += " where 社員コード = " + Me.社員コード.DbText
削除:変更後
拡張子:
Query = "delete from 社員マスタ "
Query += " where 社員コード = " + Me.社員コード.DbText
このアーティクルの参照用URLをクリップボードにコピー メンテナンス