Page 71 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 通常モードに戻る ┃ INDEX ┃ ≪前へ │ 次へ≫ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ▼報告書データベースの作成 SCT 02/10/15(火) 23:43 ┗Re:報告書データベースの作成 しろくろやぎ 02/10/16(水) 14:29 ┗Re:報告書データベースの作成 SCT 02/10/16(水) 16:41 ┗Re:報告書データベースの作成 しろくろやぎ 02/10/16(水) 20:47 ┣Re:報告書データベースの作成 孫悟空 02/10/17(木) 2:30 ┃ ┣Re:報告書データベースの作成 SCT 02/10/17(木) 10:51 ┃ ┗Re:報告書データベースの作成 SCT 02/10/20(日) 21:35 ┃ ┗Re:報告書データベースの作成 孫悟空 02/10/22(火) 0:51 ┃ ┗Re:報告書データベースの作成 SCT 02/10/22(火) 20:13 ┗Re:報告書データベースの作成 SCT 02/10/20(日) 21:45 ─────────────────────────────────────── ■題名 : 報告書データベースの作成 ■名前 : SCT <MEMENT_MORI@excite.co.jp> ■日付 : 02/10/15(火) 23:43 -------------------------------------------------------------------------
はじめまして。 職場で事故報告書データベースの作成を任されまして、現在基礎研究中の身です。 さて、 報告年月日 事故項目:複数の項目があり、報告者に選択させる 事故詳細 のテーブルがあるとして、 ○○年△△月〜▲▲月までの各事故項目の発生件数 (指定期間での項目A発生は■件、項目Bは●件…) を一括で表示させるにはどのようにしたら良いでしょうか? 各項目ひとつ単位での件数表示ならワタシでもできたのですが、 一括表示となるといまひとつ上手く思いつきません。 表示法と併せて項目の選択方式についてもアドバイスをお願いいたします。 情報提示の不備等ございましたらご指摘ください。すぐにお返事いたします。 よろしくお願いいたします。 |
>報告年月日 >事故項目:複数の項目があり、報告者に選択させる >事故詳細 >のテーブルがあるとして、 >○○年△△月〜▲▲月までの各事故項目の発生件数 >(指定期間での項目A発生は■件、項目Bは●件…) >を一括で表示させるにはどのようにしたら良いでしょうか? 指定期間内で月次毎に出す必要はないんですね? なら、グループ指定を使われると良いと思います。 クエリーを作られる際、メニューで「表示(V)」→「集計(O)」を 選択し、各フィールドの「集計」行を以下のように設定します。 報告年月日:Where条件 事故項目:グループ 事故詳細:カウント SQL表示では「.... GROUP BY 事故項目 ....」となるはずです。 |
しろくろやぎ さん、回答有難うございます。 申しわけありません。 月次ごとの件数を指定ヶ月分、同一画面で表示&印刷する必要があるんです。 どうぞよろしくお願いいたします。 |
>月次ごとの件数を指定ヶ月分、同一画面で表示&印刷する必要があるんです。 となると、報告年月日から年月のみを取り出し、そのフィールドも グループ指定する必要があります。 |
しろくろやぎさん,SCTさんこんばんは、横レス失礼します。 テーブルの定義が以下のようなら CREATE TABLE JIKO_HOUKOKU_TBL ( 報告年月日 DATE NOT NULL, 事故項目 TEXT(10) NOT NULL, 事故詳細 MEMO ) 私は以下のようなモジュールで集計をやっています。 ご参考まで。。。 Option Compare Database Option Explicit Sub CROSS_SHUUKEI() Dim KIKAN, SQLStr, SelectSQL, WhereSQL As String Dim Db As DAO.database Dim 年月_Rs As DAO.Recordset Dim QueryName, 集計Query As Variant Set Db = CurrentDb For Each QueryName In Db.QueryDefs If QueryName.Name = "集計Query" Then Db.QueryDefs.Delete "集計Query" End If Next QueryName 'データ内にある年月を抜き出し SQLStr = "" SQLStr = SQLStr & "SELECT DISTINCT" & Chr(13) & Chr(10) SQLStr = SQLStr & "Year(報告年月日) & iif(len(Month(報告年月日))=1," & _ "'0' & Month(報告年月日),Month(報告年月日)) AS 年月" & Chr(13) & Chr(10) SQLStr = SQLStr & "FROM JIKO_HOUKOKU_TBL" & Chr(13) & Chr(10) SQLStr = SQLStr & "ORDER BY" & Chr(13) & Chr(10) SQLStr = SQLStr & "Year(報告年月日) & iif(len(Month(報告年月日))=1," & Chr(13) & Chr(10) SQLStr = SQLStr & "'0' & Month(報告年月日),Month(報告年月日))" '年月のレコードセット Set 年月_Rs = Db.OpenRecordset(SQLStr, dbOpenDynaset) 'SQLを作成する SelectSQL = "" Do While Not 年月_Rs.EOF If SelectSQL = "" Then SelectSQL = SelectSQL & "SUM(iif(Year(報告年月日) & " & _ "iif(len(Month(報告年月日))=1,'0' & Month(報告年月日)," & _ "Month(報告年月日))='" & 年月_Rs("年月").Value & "',1,0)) as " & _ 年月_Rs("年月").Value & Chr(13) & Chr(10) Else SelectSQL = SelectSQL & ",SUM(iif(Year(報告年月日) & " & _ "iif(len(Month(報告年月日))=1,'0' & Month(報告年月日)," & _ "Month(報告年月日))='" & 年月_Rs("年月").Value & "',1,0)) as " & _ 年月_Rs("年月").Value & Chr(13) & Chr(10) End If DoEvents 年月_Rs.MoveNext Loop SQLStr = "" SQLStr = SQLStr & "SELECT" & Chr(13) & Chr(10) SQLStr = SQLStr & "事故項目," & Chr(13) & Chr(10) SQLStr = SQLStr & SelectSQL SQLStr = SQLStr & "FROM" & Chr(13) & Chr(10) SQLStr = SQLStr & "JIKO_HOUKOKU_TBL" & Chr(13) & Chr(10) SQLStr = SQLStr & "GROUP BY" & Chr(13) & Chr(10) SQLStr = SQLStr & "事故項目" '求めるクエリーを作成する。 Set 集計Query = Db.CreateQueryDef("集計Query") 集計Query.SQL = SQLStr End Sub DAOを使ってますので参照設定を忘れずに。 外れでしたらゴメンです。 |
孫悟空 さん、しろくろやぎさん アドバイスありがとうございます。 当方の技量ではアドバイスの検証に時間がかかりそうなので、 充分に咀嚼してから、再び質問することがあるかもしれませんが よろしくお願いいたします。 |
孫悟空さん こんばんは。SCTです。 ご教示下さったコードにて『集計Query』を出力することができました。 さらに質問を追加させてください。この『集計Query』で得られた集計結果を利用して ・月の総件数 ・項目ごとの総件数 ・グラフ表示 を行わせるには、どうしたらよいでしょうか? どうぞよろしくお願いいたします。 |
基本的には、前回回答のSQLを少し簡単にするだけです。 ・月の総件数 Option Compare Database Option Explicit Sub CROSS_SHUUKEI() Dim SQLStr, SelectSQL As String Dim Db As DAO.Database Dim 年月_Rs As DAO.Recordset Dim QueryName, 集計Query As Variant Set Db = CurrentDb For Each QueryName In Db.QueryDefs If QueryName.Name = "集計Query" Then Db.QueryDefs.Delete "集計Query" End If Next QueryName 'データ内にある年月を抜き出し SQLStr = "" SQLStr = SQLStr & "SELECT DISTINCT" & Chr(13) & Chr(10) SQLStr = SQLStr & "Year(報告年月日) & iif(len(Month(報告年月日))=1," & _ "'0' & Month(報告年月日),Month(報告年月日)) AS 年月" & Chr(13) & Chr(10) SQLStr = SQLStr & "FROM JIKO_HOUKOKU_TBL" & Chr(13) & Chr(10) SQLStr = SQLStr & "ORDER BY" & Chr(13) & Chr(10) SQLStr = SQLStr & "Year(報告年月日) & iif(len(Month(報告年月日))=1," & Chr(13) & Chr(10) SQLStr = SQLStr & "'0' & Month(報告年月日),Month(報告年月日))" '年月のレコードセットの抜き出し Set 年月_Rs = Db.OpenRecordset(SQLStr, dbOpenDynaset) SelectSQL = "" Do While Not 年月_Rs.EOF If SelectSQL = "" Then SelectSQL = SelectSQL & "SUM(iif(Year(報告年月日) & " & _ "iif(len(Month(報告年月日))=1,'0' & Month(報告年月日)," & _ "Month(報告年月日))='" & 年月_Rs("年月").Value & "',1,0)) as " & _ 年月_Rs("年月").Value & Chr(13) & Chr(10) Else SelectSQL = SelectSQL & ",SUM(iif(Year(報告年月日) & " & _ "iif(len(Month(報告年月日))=1,'0' & Month(報告年月日)," & _ "Month(報告年月日))='" & 年月_Rs("年月").Value & "',1,0)) as " & _ 年月_Rs("年月").Value & Chr(13) & Chr(10) End If DoEvents 年月_Rs.MoveNext Loop SQLStr = "" SQLStr = SQLStr & "SELECT" & Chr(13) & Chr(10) SQLStr = SQLStr & SelectSQL SQLStr = SQLStr & "FROM" & Chr(13) & Chr(10) SQLStr = SQLStr & "JIKO_HOUKOKU_TBL" Set 集計Query = Db.CreateQueryDef("集計Query") 集計Query.SQL = SQLStr End Sub ・項目ごとの総件数 Option Compare Database Option Explicit Sub CROSS_SHUUKEI() Dim SQLStr As String Dim Db As DAO.Database Dim QueryName, 集計Query As Variant Set Db = CurrentDb For Each QueryName In Db.QueryDefs If QueryName.Name = "集計Query" Then Db.QueryDefs.Delete "集計Query" End If Next QueryName SQLStr = "" SQLStr = SQLStr & "SELECT" & Chr(13) & Chr(10) SQLStr = SQLStr & "事故項目," & Chr(13) & Chr(10) SQLStr = SQLStr & "Count(事故項目) as 総件数" & Chr(13) & Chr(10) SQLStr = SQLStr & "FROM" & Chr(13) & Chr(10) SQLStr = SQLStr & "JIKO_HOUKOKU_TBL" & Chr(13) & Chr(10) SQLStr = SQLStr & "Group BY" & Chr(13) & Chr(10) SQLStr = SQLStr & "事故項目" Set 集計Query = Db.CreateQueryDef("集計Query") 集計Query.SQL = SQLStr End Sub ・グラフ表示 申し訳ありませんが、アクセスのグラフ機能は、使った事がありません。 |
孫悟空さん、 こんばんは。SCTです。 早速の回答有難うございます。 非常に参考になり、勉強不足を痛感いたしました。 SQLはスゴク便利なものなんですね…。 SQLについて、これからは注目して書店を回ってみようと思います。 どうも有難うございました。 |
しろくろやぎさん こんばんは。SCTです。 全く使用したことが無かった「集計クエリ」の示唆をくださって有難うございました。 月次別集計は孫悟空さんのコードを使わせて頂く方向でテストしていますが、 ご教示くださった方法は違う条件での集計にまだまだ使えそうなものですね。 やはり、アクセスは奥が深いです。 どうもありがとうございました。 孫悟空さんへのレスに記載した、更なる質問についてアイデアがございましたら ご教示くださいますようお願いいたします。 |