VB.net : マスタメンテサンプルコード解説(1)

  初期設定




ブラウザでダウンロード

Mtn_form

データベース接続は、ODBC ドライバ名を指定して動的な接続を行っています。
このサンプルの MySQLでは、MySQL ODBC 3.51 Driver となっていますが、
MySQL ODBC 5.1 Driver 等、変更が必要な場合があります。

Mysqlodbc

実際の接続情報は、bin ディレクトリの中の Debuf または Release ディレクトリにそれぞれ、db.ini があります


DBAccess.vb
  
' ********************************************************
' (コンストラクタの定義)( Sub で定義する )
' ********************************************************
Public Sub New( _
ByVal type As Integer, _
ByVal sv As String, _
ByVal db As String, _
ByVal user As String, _
ByVal pass As String)

	Me.DBType = type

	Select Case Me.DBType
		Case 1
			strCon = String.Format( _
			"Driver={{MySQL ODBC 3.51 Driver}};" + _
			"SERVER={0};" + _
			"DATABASE={1};" + _
			"UID={2};" + _
			"PWD={3}", sv, db, user, pass)
		Case 2
			strCon = String.Format( _
			"Driver={{Microsoft ODBC for Oracle}};" + _
			"SERVER={0};" + _
			"UID={2};" + _
			"PWD={3}", sv, db, user, pass)
		Case Else
	End Select

End Sub
  

※ VB.net 2008 はロード時にコンバートされます

関連する記事



共通仕様.vb で定義される変数
※ アプリケーション全体で利用する変数( or 定数 ) を定義しています

オブジェクト
Public db As DB
Public myReader As OdbcDataReader
Public ini As INI
Public msg As INI


文字列
Public PGDIR As String = Application.StartupPath

Public Const INI_NAME As String = "db.ini"
Public Const INI_NAME_MESSAGE As String = "message.ini"
Public INI_PATH As String = PGDIR & "\" & INI_NAME
Public INI_PATH_MESSAGE As String = PGDIR & "\" & INI_NAME_MESSAGE

SQL文字列
Public SELECT_SQL As String = GetSlnDir() & "\Mtn\FILES\読み出し用.sql"
Public UPDATE_SQL As String = GetSlnDir() & "\Mtn\FILES\update.sql"
Public UPDATE2_SQL As String = GetSlnDir() & "\Mtn\FILES\修正用.sql"
Public INSERT_SQL As String = GetSlnDir() & "\Mtn\FILES\新規用.sql"
Public DELETE_SQL As String = GetSlnDir() & "\Mtn\FILES\削除用.sql"
Public REQUIRE_SQL As String = GetSlnDir() & "\Mtn\FILES\社員問合せ用.sql"


フォームに対して基本的な3つの処理を実装しています

1) 閉じるボタンを無効にする

  Protected メソッドをオーバーライドして、ウインドウメッセージを処理しています

2) ファンクションキ−の処理

  F4 : 第一バスでキーへフォーカス移動
  F6 : 第一バスでデータ参照ダイアログを開く
  ------------------------------------------------
  F12 : 第二パスでキャンセル用

3) Enter キーで次のコントロールへ移動

  Enter キーを押すと、次の有効なコントロールへ移動




共通仕様.vb
  
' ******************************************************
' 【マスタメンテ共通処理】
'
' 目的    : グローバル変数定義とFORMコントロール
' 作成者   : lightbox
' ファイル名 : 共通仕様.vb
' ※ アプリケーション開始前の環境処理はここで行う
' ******************************************************

Imports System.Data.Odbc
Imports System.Text
Imports System.Runtime.InteropServices

Partial Class Form1

    ' ******************************************************
    ' 共有オブジェクト
    ' ******************************************************
    Public db As DB
    Public myReader As OdbcDataReader
    Public ini As INI
    Public msg As INI

    ' ******************************************************
    ' 共有変数
    ' ******************************************************
    Public PGDIR As String = Application.StartupPath

    Public Const INI_NAME As String = "db.ini"
    Public INI_PATH As String = PGDIR & "\" & INI_NAME
    Public Const INI_NAME_MESSAGE As String = "message.ini"
    Public INI_PATH_MESSAGE As String = PGDIR & "\" & INI_NAME_MESSAGE

    Public SELECT_SQL As String = GetSlnDir() & "\Mtn\FILES\読み出し用.sql"
    Public UPDATE_SQL As String = GetSlnDir() & "\Mtn\FILES\update.sql"
    Public UPDATE2_SQL As String = GetSlnDir() & "\Mtn\FILES\修正用.sql"
    Public INSERT_SQL As String = GetSlnDir() & "\Mtn\FILES\新規用.sql"
    Public DELETE_SQL As String = GetSlnDir() & "\Mtn\FILES\削除用.sql"
    Public REQUIRE_SQL As String = GetSlnDir() & "\Mtn\FILES\社員問合せ用.sql"


    ' ******************************************************
    ' 閉じるボタンを無効にする
    ' ******************************************************
    Protected Overrides Sub WndProc( _
        ByRef m As System.Windows.Forms.Message)
        Const WM_SYSCOMMAND As Integer = &H112
        Const SC_CLOSE As Integer = &HF060

        If m.Msg = WM_SYSCOMMAND And m.WParam.ToInt32() = SC_CLOSE Then
            Return
        End If

        If m.Msg = &H2111 Then
            Return
        End If

        MyBase.WndProc(m)

    End Sub

    ' ******************************************************
    ' ファンクションキ−の処理
    ' ******************************************************
    Private Sub Form1_KeyDown(ByVal sender As Object, _
    ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown

        If Me.ヘッド部.Enabled Then
            If e.KeyCode = Keys.F4 Then
                Me.処理区分.Focus()
            End If

            If e.KeyCode = Keys.F6 Then
                ' ******************************************************
                ' このフォームが所有者として
                ' 新しいインスタンスを作成してダイアログを表示
                ' ******************************************************
                Dim Dialog As New View()
                Dim ret As DialogResult = Dialog.ShowDialog(Me)
                If ret = Windows.Forms.DialogResult.OK Then
                    Me.確認_Click(sender, e)
                End If
                Me.Show()
            End If
        End If

        If Me.ボディ部.Enabled Then
            If e.KeyCode = Keys.F12 Then
                キャンセル_Click(sender, e)
            End If
        End If

    End Sub

    ' ******************************************************
    ' Enter キーで次のコントロールへ移動
    ' ( フォームの KeyPreview : True )
    ' ******************************************************
    Private Sub Form1_KeyPress(ByVal sender As Object, _
    ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles Me.KeyPress

        If e.KeyChar = ControlChars.Cr Then
            Me.SelectNextControl(Me.ActiveControl, True, True, True, True)
            e.Handled = True
        End If

    End Sub

End Class
  

Microsoft へのリンク

Control.SelectNextControl メソッド (System.Windows.Forms)



  ソリューションディレクトリを取得



  
' ******************************************************
' ソリューションディレクトリを取得
' ******************************************************
Function GetSlnDir() As String

    GetSlnDir = Path.GetDirectoryName(Application.StartupPath)
    GetSlnDir = Path.GetDirectoryName(GetSlnDir)
    GetSlnDir = Path.GetDirectoryName(GetSlnDir)

End Function
  










  infoboard   管理者用   
このエントリーをはてなブックマークに追加





フリーフォントWEBサービス
SQLの窓WEBサービス

SQLの窓フリーソフト

素材

一般WEBツールリンク

SQLの窓

フリーソフト

JSライブラリ