• ベストアンサー

アクセス レポート 抽出表示について

アクセス レポートで悩んでおります。 内容としてはですが発注月と納入月が一致したら○というレポートを表示させたのですが、発注月に対しての何%納入月が一致するかレポートにすぐにわかるように出来ますか? 具体的にはレポートAにラベルA発注月 ラベルB納入月 ラベルC一致確認(○) レポートB ラベルA発注月 ラベルB納入完了率 どなたか表示方法ご存じならご教授願います。

質問者が選んだベストアンサー

  • ベストアンサー
  • piroin654
  • ベストアンサー率75% (692/917)
回答No.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を取り出して年月が一致 するか確認する仕様にする必要もあります。 いずれにせよ、基本的なことは上記のような感じです。

kazunoko1689
質問者

お礼

ありがとうございました。 ご回答を参考に頑張ってみます

関連するQ&A

専門家に質問してみよう