データベースの準備が最も大きな処理となりますが、画面の簡単な初期処理等も行います
( Form の Load イベントの利用 )
' ******************************************************' 【マスタメンテ初期処理】'' 目的 : FORM の LOAD に伴う初期処理' 作成者 : lightbox' ファイル名 : 初期処理.vb' ※ アプリケーション開始後の処理はここで行う' ******************************************************
Imports System.Text
Imports System.ServiceProcess
Partial Class Form1
' ******************************************************
' 初期処理
' ( フォームは表示されていない )
' ******************************************************
Private Sub Form1_Load(ByVal sender As Object, _
ByVal e As System.EventArgs) Handles Me.Load
' デバッグモードログ
My.Application.Debug.Write("初期処理を開始しています")
' INI ファイル処理オブジェクトのインスタンスを作成
ini = New INI(INI_PATH)
msg = New INI(INI_PATH_MESSAGE)
' サービスが実行されていない場合にサービスを実行
Dim sc As New ServiceController()
If ini.GetDBType() = "1" Then
sc.ServiceName = ini.GetValue("MySQL", "Service")
If sc.Status = ServiceProcess.ServiceControllerStatus.Stopped Then
sc.Start()
End If
End If
' DB 接続
db = New DB( _
ini.GetDBType(), _
ini.GetServer(), _
ini.GetDB(), _
ini.GetUser(), _
ini.GetPass() _
)
db.Connect()
' 処理区分の先頭を選択状態
Me.処理区分.SelectedIndex = 0
' フォームを中央へ移動
Me.CenterToScreen()
End Sub
' ******************************************************
' フォーム表示後の初期処理
' ******************************************************
Private Sub Form1_Shown(ByVal sender As Object, _
ByVal e As System.EventArgs) Handles Me.Shown
Me.社員コード.Focus()
End Sub
End Class
第一パス(会話)の処理
ここで重要なのは、Validating、Validated、Click イベントの関係です。
Validate という概念は、Visual Studio の前より存在するアプリケーション作成用の概念で、
フィールドに入力されたデータのチェックが目的です。
' ******************************************************' 【第一パスの処理】'' 目的 : 画面定義と、アプリのエントリポイント' 作成者 : lightbox' ファイル名 : 01_Form.vb' ******************************************************
Public Class Form1
' ******************************************************
' キー入力のチェック処理
' ******************************************************
Private Sub 社員コード_Validating(ByVal sender As Object, _
ByVal e As System.ComponentModel.CancelEventArgs) Handles 社員コード.Validating
' -------------------------------------------------
' 未入力チェック
' -------------------------------------------------
If Trim(Me.社員コード.Text) = "" Then
msg.DispError("001", Me.社員コード, e) ' 必須入力
Exit Sub
End If
' -------------------------------------------------
' 数値チェック
' -------------------------------------------------
If Not CheckInt(Me.社員コード.Text) Then
msg.DispError("002", Me.社員コード, e)
Exit Sub
End If
' -------------------------------------------------
' キーコードの前ゼロ編集処理
' -------------------------------------------------
'Me.社員コード.Text = num.ToString("0000")
Me.社員コード.Text = String.Format("{0:0000}", Integer.Parse(Me.社員コード.Text))
' -------------------------------------------------
' DB 読み出し
' -------------------------------------------------
Dim myQuery As String = GetSql(Me.SELECT_SQL, Me.社員コード.Text)
myReader = db.Query(myQuery)
Dim bExist As Boolean = myReader.HasRows
' 処理区分により、チェック
Select Case Me.処理区分.SelectedIndex
Case 0, 2 ' 修正または削除
If Not bExist Then
msg.DispError("003", Me.社員コード, e)
myReader.Close()
End If
Case 1 ' 新規
If bExist Then
msg.DispError("004", Me.社員コード, e)
myReader.Close()
End If
End Select
End Sub
' ******************************************************
' キー入力のチェック完了時の処理
' ******************************************************
Private Sub 社員コード_Validated(ByVal sender As Object, _
ByVal e As System.EventArgs) Handles 社員コード.Validated
' -------------------------------------------------
' ボディ部のデータ編集
' -------------------------------------------------
Select Case Me.処理区分.SelectedIndex
Case 0 ' 修正
Me.社員名.Text = db.Value(myReader, "氏名")
Me.基本給.Text = db.Value(myReader, "給与")
' 日付の編集処理
If (db.Value(myReader, "生年月日") = "") Then
Me.生年月日.Value = CDate(Today().Date)
Me.生年月日.Checked = False
Else
Me.生年月日.Value = CDate(db.Value(myReader, "生年月日"))
Me.生年月日.Checked = True
End If
Case 1 ' 新規
Me.社員名.Text = ""
Me.基本給.Text = ""
Me.生年月日.Value = CDate(Today().Date)
Me.生年月日.Checked = False
Case 2 ' 削除
Me.社員名.Text = db.Value(myReader, "氏名")
Me.基本給.Text = db.Value(myReader, "給与")
' 日付の編集処理
If (db.Value(myReader, "生年月日") = "") Then
Me.生年月日.Value = CDate(Today().Date)
Me.生年月日.Checked = False
Else
Me.生年月日.Value = CDate(db.Value(myReader, "生年月日"))
Me.生年月日.Checked = True
End If
End Select
myReader.Close()
End Sub
' ******************************************************
' 確認
' ******************************************************
Private Sub 確認_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles 確認.Click
Select Case Me.処理区分.SelectedIndex
Case 0, 1 ' 修正・新規
Me.ヘッド部.Enabled = False
Me.ボディ部.Enabled = True
Case 2 ' 削除
Me.ヘッド部.Enabled = False
Me.ボディ部.Enabled = True
Dim obj As Object
For Each obj In Me.ボディ部.Controls
If obj.GetType().ToString() = "System.Windows.Forms.TextBox" Then
CType(obj, System.Windows.Forms.TextBox).Enabled = False
End If
Next
Me.生年月日.Enabled = False
End Select
Me.社員名.Focus()
Me.社員名.SelectAll()
End Sub
End Class
' ******************************************************' 【第ニパスの処理】'' 目的 : 主なデータの画面入力処理' 作成者 : lightbox' ファイル名 : 02_Body.vb' ******************************************************
Partial Class Form1
' ******************************************************
' 社員名のチェック
' ******************************************************
Private Sub 社員名_Validating(ByVal sender As Object, _
ByVal e As System.ComponentModel.CancelEventArgs) Handles 社員名.Validating
' -------------------------------------------------
' 未入力チェック
' -------------------------------------------------
If Trim(Me.社員名.Text) = "" Then
msg.DispError("101", Me.社員名, e)
Exit Sub
End If
End Sub
' ******************************************************
' 基本給のチェック
' ******************************************************
Private Sub 基本給_Validating(ByVal sender As Object, _
ByVal e As System.ComponentModel.CancelEventArgs) Handles 基本給.Validating
' -------------------------------------------------
' 未入力チェック
' -------------------------------------------------
If Trim(Me.基本給.Text) = "" Then
msg.DispError("102", Me.基本給, e)
Exit Sub
End If
End Sub
' ******************************************************
' キャンセル
' ******************************************************
Private Sub キャンセル_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles キャンセル.Click
UserControl.validateNone = True
Me.ヘッド部.Enabled = True
Me.ボディ部.Enabled = False
Dim obj As Object
For Each obj In Me.ボディ部.Controls
If obj.GetType().ToString() = "System.Windows.Forms.TextBox" Then
CType(obj, System.Windows.Forms.TextBox).Clear()
CType(obj, System.Windows.Forms.TextBox).Enabled = True
End If
Next
' -------------------------------------------------
' DateTimePicker の初期化
' -------------------------------------------------
Me.生年月日.Enabled = True
Me.生年月日.Value = CDate(Today().Date)
Me.生年月日.Checked = False
Me.社員コード.Focus()
Me.社員コード.SelectAll()
End Sub
End Class