・登録した発行履歴を使って入力を簡易化する
です。
入力を簡易化するために(それだけではありませんが..)コード入力という手法がよく使われます。
ただコード決めることさえも面倒くさいことがちょくちょくありませんか?
そんな時には発行履歴を使って入力を簡易化してみましょう。
まず発行履歴を表示、選択するフォームを作成します。
FormにDataGridViewを1つ置いただけです。
「親コンテナにドッキングする」を選択しておきましょう。
これからコードを書いていきます。
まずは「発行履歴を表示、選択するフォーム」側から
Public Class Form請求先選択
Dim db As New database.MSAccess.DBAccess
Dim SqlCommand As OleDb.OleDbCommand
Dim dt As DataTable
Private Sub Form_Activated(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Activated
Call dgvFill()
End Sub
Private Sub Form_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
AddHandler Me.FormClosing, AddressOf CommonLib.Form_FormClosing
End Sub
Private Sub dgvFill()
SqlCommand = New OleDb.OleDbCommand("SELECT DISTINCT [宛先1行目] & [宛先2行目] AS 宛先, 宛先1行目, 宛先2行目 FROM 発行履歴 ORDER BY [宛先1行目] & [宛先2行目];")
dt = db.getDataTable(SqlCommand)
If IsNothing(dt) Then
Dim ex As Exception = db.SQLException
MsgBox("請求先の取り出しでエラーが発生しました。" & vbNewLine & ex.Message, MsgBoxStyle.Information, "")
Exit Sub
Else
Try
dgv.Columns("宛先1行目").Visible = True
dgv.Columns("宛先2行目").Visible = True
Catch ex As Exception
'なにもしない
End Try
dgv.DataSource = dt.DefaultView
dgv.Columns("宛先1行目").Visible = False
dgv.Columns("宛先2行目").Visible = False
Call dgvFormat()
End If
End Sub
Private Sub dgvFormat()
'dgvの設定
dgv.AllowUserToResizeRows = False
'-----明細行の色を変える-----
dgv.AlternatingRowsDefaultCellStyle.BackColor = Color.LightCyan
'----------------------------
'-----明細行の選択は行選択にする-----
dgv.SelectionMode = DataGridViewSelectionMode.FullRowSelect
'----------------------------
'-----列の各設定-----
dgv.Columns("宛先").ReadOnly = True
dgv.Columns("宛先").Width = 330
'--------------------
End Sub
Private Sub dgv_DoubleClick(ByVal sender As Object, ByVal e As System.EventArgs) Handles dgv.DoubleClick
Try
If dgv.CurrentRow.Index = -1 Then Exit Sub
Catch ex As Exception
Exit Sub
End Try
If dgv.Item(1, dgv.CurrentRow.Index).Value.ToString.Length = 0 Then
Try
frm合計請求書発行.tb1行目.Text = ""
frm合計請求書発行.tb1行目.Visible = False
Catch ex As Exception
'なにもしない
End Try
Else
frm合計請求書発行.tb1行目.Text = dgv.Item(1, dgv.CurrentRow.Index).Value.ToString
frm合計請求書発行.tb1行目.Visible = True
End If
frm合計請求書発行.tb2行目.Text = dgv.Item(2, dgv.CurrentRow.Index).Value.ToString
frm合計請求書発行.tb今回請求金額.Focus()
Me.Close()
End Sub
End Class
つぎに呼び出す側も書いていきます。
今回は請求先の入力欄をダブルクリックすると、選択画面が表示されるようにしました。
Private Sub tb2行目_DoubleClick(ByVal sender As Object, ByVal e As System.EventArgs) Handles tb2行目.DoubleClick If IsNothing(frm請求先選択) Then frm請求先選択 = New Form請求先選択 frm請求先選択.Owner = Me End If frm請求先選択.Show() End Sub
これで請求先の入力欄をダブルクリックすると選択画面が表示され、発行履歴の行をダブルクリックすると請求先の入力欄が入力されるようになりました。