・登録した発行履歴を使って入力を簡易化する
です。
入力を簡易化するために(それだけではありませんが..)コード入力という手法がよく使われます。
ただコード決めることさえも面倒くさいことがちょくちょくありませんか?
そんな時には発行履歴を使って入力を簡易化してみましょう。
まず発行履歴を表示、選択するフォームを作成します。
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
これで請求先の入力欄をダブルクリックすると選択画面が表示され、発行履歴の行をダブルクリックすると請求先の入力欄が入力されるようになりました。