Access学習メモ 5-1. グラフ‼

Access学習メモ 5-1. グラフ‼

コンテンツ
学び
ゴジ図書館の貸出入力簿への記入済データが反映されるよう作ってみました
グラフ機能はAccess2024を使用しています

最近のAccessのグラフ機能は、モダンチャートという名称の新機能が搭載されており
だいぶ使いやすくなったが、凡例を設定すると微妙な仕上がりになるのは相変わらずみたい

とりあえず、こう押さえておけば何とかなるかな
タテ:軸(項目)・・・分類テーマ(今回はジャンル名)
ヨコ:値(Y軸)・・・グラフ値の単位(今回は冊数)

図書館で本を借りるときは(購入とは違い)同じ日に同じ人が同じ本を複数冊、利用するパターンは想定しにくい
1レコードをそのまま貸出1件と想定し、クエリ上でカウントさせたものをレコードソースとしている
貸出日1レコードを1冊数とみなす考え方が正解かは分からない
でも、図書館管理システムは、Accessの仕組みに適したテーマのように思う

グラフといってもレポートであり、メニュー画面から直接プレビュー表示させることが可能だけど
少しシステムらしくなるようグラフ出力用フォーム「印刷画面」を経由させ
ユーザーに出力対象期間を選ばせてみる

「印刷画面」フォームを開くと、操作時点の当月が自動的に「終了年月」として反映され
さらに当月の11か月前を「開始年月」としてカレンダー指定することで
今月から遡って1年間を呼び出すことができる仕掛けを施す

直接、手入力してももちろんいいけど
「おっフォームひらいたら、もう年月が入ってる☆」って方が、なんだかワクワク感があるし
「こういうの作りたい」って憧れみたいなものが学習のモチベーションにも繋がっていく

プロシージャへの命令式には、学習メモ0-5.へ記入したFormat関数やDateAdd関数を組み合わせる

Me.開始年月 = Format(DateAdd("m", -11, Date), "yyyy年m月)
Me.終了年月 = Format(Date, "yyyy年m月)
※年月はお好みで"yyyy/mm"としてもよい

グラフを作り上げる集計データは「貸出日」と「返却冊数(=返却日入力レコード)
日付は、貸出簿へは年月日単位で登録している
グラフの年月単位へデータを置き換えるために、テキストボックス上のプロパティシート「定型入力」で入力ルール、保存設定、表示設定をおこなう

9999/99: 「9」は数字(または空白)を許可する記号で、ここでは「4桁の年 / 2桁の月」と形式指定
;0: スラッシュ(/)などの区切り文字を、データとしてテーブル内に保存するよう指定
;_: 入力待ち時点で表示する文字(プレースホルダ)として「_」を表示設定

グラフにも期間を表示させたい
通常なら、グラフのタイトル下かどこかにテキストを置き
=[Forms]![印刷画面]![開始年月] & " ~ " & [Forms]![印刷画面]![終了年月]
を搭載すれば解決だけど
今回の開始年月&終了年月はフォーム読み込み時に計算をもたせた仕様であり
Accessはそういうとこまで読みにいけないので
フォーム参照ではなくレポート上で現在年月を読み込ませ
現在から遡って1年以内の期間を自動表示させる

開始年月
=Format(DateAdd("m",-11,Date()),"yyyy\年m\月")
終了年月
=Format(Date(),"yyyy\年m\月")

印刷のためのイベントプロシージャ
フィールド名はグラフのレコードソースから引用しないとErrorとなる

Private Sub 累計グラフ出力_Click()
    Dim strFilter As String
    strFilter = "[貸出日] >= DateSerial(Year(Date()), Month(Date()) - 11, 1)"
    DoCmd.OpenReport "グラフ_ジャンル別貸出冊数", acViewPreview, , strFilter
End Sub

Private Sub 貸出中グラフ出力_Click()
    Dim strFilter As String
    strFilter = "[返却冊数] Is Null"
    DoCmd.OpenReport "グラフ_ジャンル別貸出中", acViewPreview, , strFilter
End Sub

貸出数累計グラフ
累計グラフ.png


貸出総数の内、未返却分を除き貸出中のみ集計したグラフ
貸出中グラフ.png



※今回ここに記録した学習データの内、一部関数につきまして、過去に取り組んだ別の課題にてココナラのユーザーさんから教わった情報がヒントになっています。おかげさまで、この作品の仕上がりにたどり着くことができました。ありがとうございました。※

サービス数40万件のスキルマーケット、あなたにぴったりのサービスを探す