- ベストアンサー
アクセス レポート 抽出表示について
アクセス レポートで悩んでおります。 内容としてはですが発注月と納入月が一致したら○というレポートを表示させたのですが、発注月に対しての何%納入月が一致するかレポートにすぐにわかるように出来ますか? 具体的にはレポートAにラベルA発注月 ラベルB納入月 ラベルC一致確認(○) レポートB ラベルA発注月 ラベルB納入完了率 どなたか表示方法ご存じならご教授願います。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
>http://okwave.jp/qa/q8769318.html の続きでしょうか。 たとえば、以下のようなテーブルがあるとします。 テーブル名を「T進捗」とします。なお、IDはオートナンバー で主キーではありませんが、特にこれがなければ、 ということもないのですが、何となくくっつけています。 一応、フィールドAもフィールドBもデータ型は「数値型」としています。 型が違えば、以下もいろいろ直す必要はでてきますが。 ID フィールドA フィールドB フィールドC 1 1 2 2 1 1 ○ 3 1 3 4 2 2 ○ 5 2 3 6 2 2 ○ 7 3 3 ○ 8 4 5 9 4 4 ○ 10 4 4 ○ 次に、標準モジュールに以下のコードを貼り付け、保存します。 DAOを使っているのでコード表の参照設定でDAOにチェックが入っているか 確認してください。 Function funcRecCount(strMonth As Integer) As Long Dim db As DAO.Database Dim rs As DAO.Recordset Dim i As Long Dim j As Long Set db = CurrentDb Set rs = db.OpenRecordset("T進捗") i = 0 j = 0 If rs.RecordCount > 0 Then Do Until rs.EOF If rs!フィールドA = strMonth Then If rs!フィールドC = "○" Then i = i + 1 End If j = j + 1 End If rs.MoveNext Loop End If '納入完了率 funcRecCount = Int((i / j) * 100) rs.Close: Set rs = Nothing db.Close: Set db = Nothing End Function これらのテーブルと関数を基に、クエリを作成します。 まず、「T進捗」を基にすべてのフィールドを表示する 選択クエリを作成します。 次に、作成したクエリの新しいフィールドに以下のように 設定します。 納入完了率: funcRecCount([フィールドA]) つまり、クエリのデザインビューでは、 フィールド ID フィールドA フィールドB フィールドC 納入完了率: funcRecCount([フィールドA]) テーブル T進捗 T進捗 T進捗 T進捗 並び替え 表示 チェック チェック チェック チェック チェック のようになっています。(フィールドが途中で折り返されるかも しれませんが、そのときは上記をコピーしてテキストで眺めてみてください) ところで、本当はラベルCは必要はないのですが、要するに フィールドAとフィールドBが一致すればデータは揃うのですが。 そしてクエリを開くと、 ID フィールドA フィールドB フィールドC 納入完了率 1 1 2 33 2 1 1 ○ 33 3 1 3 33 4 2 2 ○ 66 5 2 3 66 6 2 2 ○ 66 7 3 3 ○ 100 8 4 5 66 9 4 4 ○ 66 10 4 4 ○ 66 このクエリを基にそのままレポートを作成するか、あるいは フィールドAの月を基にグループ化して毎月の 納入完了率を月毎に表示するかによって、レポートの 難易度も違ってきます。 また、フィールドAやフィールドBが「日付/時刻型」ならば、 たとえば、2014/10/3のようなデータがあるならば、 Format関数などを使い、2014/10を取り出して年月が一致 するか確認する仕様にする必要もあります。 いずれにせよ、基本的なことは上記のような感じです。
お礼
ありがとうございました。 ご回答を参考に頑張ってみます