Accessでは、分割フォームをよく利用しています。
分割フォームは、フォームビュー(単票フォーム)とデータシートビューが同時に表示され、Excelのフィルターと同じようにフィルターボタンで様々な抽出や並べ替えができるので重宝しています。
-
分割フォーム(単票フォームとデータシートを同時に表示)の作成と使い方
Accessでは、画面を2つに分け[単票フォーム]と[データシート]を同時に表示できる[分割フォーム]というのがあります。Access200 ...
いくら便利な分割フォームでも、複数のフィールドで並べ替えたい場合などは、コマンドボタンを設置しておくとより便利になります。
ここでは、[並べ替え]ボタンをクリックして、[売上]の降順で[商品コード]の昇順に並べ替えるようにします。並べ替えの[解除]ボタンも設置します。
マクロビルダーを起動して埋め込みマクロで設定する方法と、コードビルダーを起動してVBAで記述する方法を紹介します。
参考分割フォームを利用するとデータシートビューでデータ抽出をすることが多いと思いますが、空白を含むフィールドでは注意が必要です。
-
フィルターの空白を含む複数選択で抽出数が異なる
Access2007からの新機能だと思うですが、テーブルやデータシートビューでフィルターが使用できます。 Excelのフィルターと同じように ...
また、フィルターボタンをクリックしても、リストが表示されない場合があります。
これは、[Accessのオプション]の設定で解決できます。以下の記事で解説しています。
この記事の目次
テーブルとクエリ
ここでは、テーブル[T_商品]の[商品ID]フィールドとテーブルの[T_売上]の[商品名]フィールドをリレーションシップで参照整合性を設定しています。
2つのテーブルを基にクエリ[Q_売上]を作成しています。
デザインビューを開いて、デザイングリッドで、並べ替えは[ID]の昇順になるようにしています。
このクエリをもとに分割フォームを作成しています。以下のように[ID]の昇順に並びます。
分割フォームでは、各フィールドの▼ボタンをクリックして、昇順や降順の並べ替え、また、レコードの抽出なども簡単に行うことができます。
参考ここでのフォームの表示は、[タブ付きドキュメント](既定)です。[ウィンドウを重ねて表示する]と[タブ付きドキュメント]の違いについては、以下の記事で解説しています。
-
[タブ付きドキュメント]と[ウィンドウを重ねて表示する]の違い
Access2007以降、オブジェクトを表示すると、タブ付きウィンドウで表示されるようになっています。 昔からAccessを使用している方に ...
フォームにコマンドボタンを設置
フォームにボタンを設置して、クリックすると[売上]の降順で[商品コード]の昇順に並ぶようにします。
まず、フォームをデザインビューで開きます。
[デザイン]タブの[コントロール]にある[ボタン]をクリックして、任意の位置でドラッグします。
この時、[コマンドボタンウィザード]が表示されたら、[キャンセル]ボタンをクリックして閉じます。
コマンドボタンに[標題]と[名前]
コマンドボタンのプロパティを表示して、[標題]と[名前]を付けます。
キーボードから[F4]キーを押して、プロパティを表示します。もちろん、[デザイン]タブの[ツール]グループにある[プロパティシート]ボタンをクリックしても同じです。
挿入したコマンドボタンは、ここでは[並べ替え]という標題で、ボタンの名前は[並べ替えボタン]としています。
[標題]は[書式]タブにあります。
[名前]は[その他]タブにあります。
マクロビルダーを選択して[埋め込みマクロ]で設定
[並べ替え]ボタンのプロパティの[イベント]タブにある[クリック時]の[...]ボタンをクリックします。
[ビルダーの選択]ダイアログボックスが表示されます。[マクロビルダー]を選択して、[OK]ボタンをクリックします。
[マクロツール]が表示されますので、▼ボタンをクリックして、一覧の最後にある[並べ替えの設定]をクリックします。
そして、[並べ替え]のテキストボックスに以下のように入力します。
レコードを並べ替えるフィールド名を指定します。
既定では昇順に並べ替えられますが、フィールド名の後ろに半角スペースを入力して、[DESC]と入力すると降順になります。
DESCの前には、必ず半角スペースを入力します。
また、複数のフィールドで並べ替えを指定する場合は、[,(カンマ)]で区切ります。
[閉じる]ボタンをクリックします。
以下のメッセージウィンドウが表示されたら、[はい]をクリックします。
[並べ替え]ボタンのプロパティには、[埋め込みマクロ]と表示されます。
フォームビューに切り替えて、動作を確認します。
[解除]ボタンの設置
並べ替えを実行した後に、並べ替えを解除するためのボタンを設置します。
同じようにコマンドボタンを挿入して、マクロビルダーを選択してマクロツールを表示します。
今度は、一覧から[フィルター/並べ替えの解除]を選択します。
フォームビューに切り替えて、動作を確認します。
参考他のフィールドで並べ替えを設定していても、すべてのフィールドの並び替えが解除されます。
参考[埋め込みマクロ]と[独立マクロ]の違いについては、以下の記事で解説しています。
コマンドボタンをカスタマイズすると楽しくなります。
-
コマンドボタンの背景色を変更/ポイント時とクリック時の色を設定
Access2010から、フォームで作成したコマンドボタンの背景色がプロパティで設定できるようになりました。 ポイント時の色や、クリック時の ...
[コードビルダー]を選択してVBAで設定
コマンドボタンを挿入して、コマンドボタンの標題と名前を付けるところまでは同じですので、[ビルダーの選択]から解説します。
どちらか、分かりやすいほうで設定してください。
[ビルダーの選択]ダイアログボックスで[コードビルダー]を選択して[OK]ボタンをクリックします。
以下のように入力します。
ここもDESCの前には、半角スペースを入力します。複数のフィールドで並べ替えを指定する場合は、[,(カンマ)]で区切ります。
[Me.]は省略しても動作すると思います。
Me.OrderBy = "売上 DESC,商品コード"
Me.OrderByOn = True
[並べ替え]ボタンのプロパティには、[イベントプロシージャ]と表示されます。
[解除]ボタンには、以下のように入力します。
参考他のフィールドで並べ替えを設定していても、すべてのフィールドの並び替えが解除されます。
Me.OrderByOn = False
フォームを表示した時の並べ替えの設定
コマンドボタンで並べ替えを設定したり、解除することもできますが、フォームを表示したときに、日付の昇順にもできます。
フォームのプロパティの[並べ替え]で[日付]を指定します。そして、[読み込み時に並べ替えを適用]を[はい]にします。
参考[読み込み時に並べ替えを適用]を[いいえ]にすると、並べ替えをして解除せずそのまま閉じても、次にフォームを開くときは、解除されて既定の並びになります。既定は[はい]です。
プロパティの[並べ替え]での設定については、フォームでのレコードの並べ替えを参照してください。
-
フォームでのレコードの並べ替え(プロパティシートで設定)
Accessのフォームでレコードの並べ替えは、フォームのプロパティで行うことができます。 下のようなテーブルを基に作成した帳票フォームがあり ...
すると、以下のように日付フィールドの昇順で表示されるようになります。