accessのクエリについて教えてください。...2017

Writer: admin Type: foresth Date: 2019-01-08 00:00
accessのクエリについて教えてください。...2017/12,2018/1,2018/2,2018/3,2018/4...と月ごとのフィールド名があります。今月から1年間さかのぼった月までのフィールドをごっそり抜き出すにはどうすればよいでしょうか。よろしくお願いします。共感した0###データの持ち方(テーブル設計)が間違ってます。項目...年月..........AAA...2017/12....AAA...2018/01....AAA...2018/02....:BBB...2017/12....BBB...2018/01....BBB...2018/02....:年月を期間で抽出し、この結果の年月を横に並べたいなら、クロス集計クエリを使います。ナイス0
###実は、回答頂いたようなテーブルがあり、クロスクエリで質問の様な状態にしていました。『年月を期間で抽出』を今月からさかのぼって12カ月とするにはどうすればようでしょうか。
###希望通りのことができました。ありがとうございました!他のご回答者様もありがとうございました。月の場合は”m”にすればいいんですね。アクセスVBAはまだ使った事がないので、勉強してみます。###現状のクエリはクロス集計クエリなんですね。なら、クロス集計クエリのデザインビューで、年月のフィールドの抽出条件に現在から1年前以降を抽出する条件を設定すればいいでしょう。具体的に条件式が必要なら、元のテーブルのテーブル名、フィールド名、フィールドのデータ型を提示してください。よくわからなければ、まず、もとのテーブルから1年前以降を抽出するクエリを作成して、そのクエリからクロス集計クエリを作成すればいいでしょう。もし、年月のフィールドが日付/時刻型なら、その抽出条件に下記の式を設定すればいいでしょう。>=DateAdd("m",-12,DateSerial(Year(Date()),Month(Date()),1)ナイス0
###フィールドに年月を持っているのであれば、クエリだけでは無理かと思います。VBAでクエリを生成するようにしたらどうでしょうか?Sub test()Dim Qdf As QueryDefDim tbl_nm As StringDim i As Integertbl_nm = "TBL_NM"For i = 0 To -11 Step -1SQL = SQL & tbl_nm & ".[" & Format(DateAdd("M", i, Now), "YYYY/M") & "],"NextDoCmd.Close acQuery, "Q_TMP"DoCmd.DeleteObject acQuery, "Q_TMP"Set Qdf = CurrentDb.CreateQueryDef("Q_TMP", "SELECT " & Mid(SQL, 1, Len(SQL) - 1) & " FROM " & tbl_nm)End Subナイス0

 

TAG