こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

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

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

投稿日時 - 2014-10-01 05:02:59

QNo.8774695

すぐに回答ほしいです

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

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を取り出して年月が一致
するか確認する仕様にする必要もあります。

いずれにせよ、基本的なことは上記のような感じです。

投稿日時 - 2014-10-03 19:09:24

お礼

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

投稿日時 - 2014-10-06 20:23:34

このQ&Aは役に立ちましたか?

8人が「このQ&Aが役に立った」と投票しています

-広告-
-広告-

回答(1)

-広告-
-広告-

あなたにオススメの質問

-広告-
-広告-