タイトル部分をクリックで簡単ソートする方法。開発18日目
MSAccessでアプリ作ってます。簡単にできて効果が高い、フォームのタイトル部分をクリックすると昇順、降順の並び替えが簡単にできるコードを自分のためにメモ。
つまり、こういうやつです。
上の図はふりがな順になってますが、たとえば「お客様ID」のところをクリックすると、順番がソートされます。
お客様IDの昇順になりました。もういちどクリックすると降順になります。こういうのはあると便利です。
じつは上のように同じAccessのフォームでも「データシート」形式を使えばあらかじめこのソートや検索機能はついてきます。けれど、ボタンを設置したり画像を表示したりができないので、複数のアイテム形式でもソート機能をつけるのが今回のテーマです。
タイトル部分はラベルでできています。まず、ここをクリックしたときにFunctionを動かす部分はこんな感じです。
Private Sub lbl_ふりがな_Click()
sortKey = "ふりがな"
labelSort (sortKey)
End Sub
sortキーはどのラベルをソートさせるのか区別するためにつけている変数です。labelsortファンクションに渡します。
Function labelSort(sortKey)
If Me.Form.OrderBy <> sortKey Or Me.Form.OrderBy = sortKey & " DESC" Then
With Me.Form
.OrderBy = sortKey
.OrderByOn = True
End With
Else
With Me.Form
.OrderBy = sortKey & " DESC"
.OrderByOn = True
End With
End If
End Function
本体はこんな感じです。
ここでラベルにつけていた変数が生きてきます。他のラベルにもソート機能をつけるには、クリックしたときにそのフィールドの名前をFunctionに渡してやるだけなので、ずらずらと以下のように機能を並べていきます。
Private Sub lbl_お客様ID_Click()
sortKey = "お客様ID"
labelSort (sortKey)
End Sub
Private Sub lbl_ふりがな_Click()
sortKey = "ふりがな"
labelSort (sortKey)
End Sub
Private Sub lbl_過去1年回数_Click()
sortKey = "過去1年回数"
labelSort (sortKey)
End Sub
Private Sub lbl_最終来店日_Click()
sortKey = "最終来店日"
labelSort (sortKey)
End Sub
Private Sub lbl_氏名_Click()
sortKey = "氏名"
labelSort (sortKey)
End Sub
Private Sub lbl_担当者_Click()
sortKey = "担当者名"
labelSort (sortKey)
End Sub
ディスカッション
コメント一覧
まだ、コメントがありません