Access (VBA)

Access VBAに関するフォーラムです。
  • 掲示板への投稿には会員登録(無料)が必要です。会員登録がまだの方はこちら
  • 掲示板ご利用上のお願い」に反するご記入はご遠慮ください。
  • Q&A掲示板の使い方はこちらをご覧ください
トピックに返信
質問

 
(指定なし : 指定なし)
グラフの範囲指定
投稿日時: 18/09/09 12:33:52
投稿者: さー

お世話になります。
 
テーブルに登録したデータベースから、範囲を指定して抽出し、レポートに
積上棒グラフを作成したいです。
テーブル
No. 日にち  分類
1 2013/4/1 りんご
2 2013/4/9  みかん
3 2013/5/2  りんご
・・・・
2000 2018/9/9 バナナ
 
グラフ
横軸  2017年9月 2017年10月・・・2018/9月(直近13ヶ月分)
縦軸  りんご2個、みかん1個、バナナ1個
 
横軸を月単位にすることはできました。直近13ヶ月を表す抽出条件を
教えてください。
 
よろしくお願いいたします。
 

回答
投稿日時: 18/09/14 15:10:02
投稿者: sk

引用:
テーブルに登録したデータベースから、範囲を指定して抽出し、
レポートに積上棒グラフを作成したいです。

引用:
横軸  2017年9月 2017年10月・・・2018/9月(直近13ヶ月分)

引用:
直近13ヶ月を表す抽出条件

[日にち]に対する Where 条件として、
以下のような式を設定なさればよろしい
のではないでしょうか。
 
-----------------------------------------------------------
 
Between DateSerial(Year(Date()),Month(Date())-12,1)
    And DateSerial(Year(Date()),Month(Date())+1,0)
 
-----------------------------------------------------------

投稿日時: 18/09/18 21:45:22
投稿者: さー

sk様
 
回答をいただきまして、ありがとうございます。
折角回答していただいたのですが、質問文が言葉足らずに
なっていましたので、追加で質問させてください。
 
テーブル(データベース)
日にち列のデータ型:日付型
 
テーブルに登録したデータベースからレポートにグラフを
出力する際に、クエリ内にあるコンボボックスを使用して
います。
月:Format([日時],"yyyy\年mm\月")
 
追加質問
グラフの横軸をクエリ内にあるコンボボックス
の年月から過去13ヶ月分
に限定する方法がわかり
ましたら、教えていただけますでしょうか?
例)
コンボボックスで2018年7月を選択した場合
レポートグラフの横軸:2017年7月〜2018年7月
 
コンボボックスで2018年8月を選択した場合
レポートグラフの横軸:2017年8月〜2018年8月
 
となるようにしたいです。
よろしくお願いいたします。
 

回答
投稿日時: 18/09/19 09:53:27
投稿者: sk

引用:
テーブルに登録したデータベースからレポートにグラフを
出力する際に、クエリ内にあるコンボボックスを使用して
います。
月:Format([日時],"yyyy\年mm\月")

引用:
グラフの横軸をクエリ内にあるコンボボックス
の年月から過去13ヶ月分に限定する方法

フォーム内にある非連結コンボボックスでは?
 
引用:
Between DateSerial(Year(Date()),Month(Date())-12,1)
    And DateSerial(Year(Date()),Month(Date())+1,0)

Between DateSerial(Year([Forms]![フォーム名]![コンボボックス名]),
                   Month([Forms]![フォーム名]![コンボボックス名])-12,
                   1)
    And DateSerial(Year([Forms]![フォーム名]![コンボボックス名]),
                   Month([Forms]![フォーム名]![コンボボックス名])+1,
                   0)
 
---------------------------------------------------------------------
 
また、グラフの値集合ソースがクロス集計クエリである場合は、
更に上記のパラメータを明示的に定義して下さい。

投稿日時: 18/09/19 20:50:46
投稿者: さー

sk様
 
お世話になります。回答ありがとうございます。
 
フォーム内にある非連結コンボボックスでは?
→ご指摘の通り、フォーム内の誤りでした。
 
グラフの横軸は、
Between "2017年8月" And "2018年8月"
と直接入力するとグラフの横軸の範囲が指定できる状態です。
 
"2017年8月"をフォーム内非連結コンボボックスで選択した日時よりも1年前
"2018年8月"をフォーム内非連結コンボボックスで選択した日時
にしたいです。
 
フォーム内の非連結コンボボックスは、
月:Format([日時],"yyyy\年mm\月")
と設定しています。
 
たびたびの質問で申し訳ありませんが、よろしくお願いいたします。
 

回答
投稿日時: 18/09/20 09:02:45
投稿者: sk

引用:
"2017年8月"をフォーム内非連結コンボボックスで選択した日時よりも1年前、
"2018年8月"をフォーム内非連結コンボボックスで選択した日時
にしたいです。

既に回答したのですが、何か問題が生じたのでしょうか。

回答
投稿日時: 18/09/20 09:43:09
投稿者: Suzu

引用:
Between "2017年8月" And "2018年8月"

これは、文字列型のフィールドに対しての条件
つまりは、
引用:
月:Format([日時],"yyyy\年mm\月")

のフィールドに対しての条件ですよね。
 
skさんの回答の 値は、どんなデータ型を返すのか考えてみましょう。

投稿日時: 18/09/20 21:01:45
投稿者: さー

sk様 Suzu様
 
お世話になります。
回答をいただきましてありがとうございます。
 

引用:
既に回答したのですが、何か問題が生じたのでしょうか。

教えていただいた式を参考にチャレンジしてみたのですが、
うまくいきませんでした。
範囲が限定されず、全部の年月が表示されてしまいます。
 
引用:
skさんの回答の値は、どんなデータ型を返すのか考えてみましょう。

sk様に教えていただいたのはDateSerial関数なので、日付型、
私がやりたいのは、Formatなので文字列、
ここまでは理解できました。
 
しかし、まず、Between "2016年12月" And [Forms]![フォーム名]![コンボボックス名]
のようにAndの後ろのみをフォーム内の非連結コンボボックスで選択したものを
選べるように入れてみましたが、"2016年12月"しか抽出できませんでした。
文字列型の場合は、Formsの前に何か関数等を入れる必要があるのでしょうか?
 
よろしくお願いいたします。

回答
投稿日時: 18/09/21 09:53:11
投稿者: sk

さー さんの引用:
sk様に教えていただいたのはDateSerial関数なので、日付型、
私がやりたいのは、Formatなので文字列、
ここまでは理解できました。

「抽出条件を設定する日付/時刻型のフィールド」と
「 Format 関数を用いている演算フィールド」
(グラフの項目軸とするフィールド)は別ですよ。
 
さー さんの引用:
日にち列のデータ型:日付型

sk さんの引用:
[日にち]に対する Where 条件として、
以下のような式を設定なさればよろしい
のではないでしょうか。

sk さんの引用:
Between DateSerial(Year([Forms]![フォーム名]![コンボボックス名]),
                   Month([Forms]![フォーム名]![コンボボックス名])-12,
                   1)
    And DateSerial(Year([Forms]![フォーム名]![コンボボックス名]),
                   Month([Forms]![フォーム名]![コンボボックス名])+1,
                   0)

sk さんの引用:
また、グラフの値集合ソースがクロス集計クエリである場合は、
更に上記のパラメータを明示的に定義して下さい。

具体的にどのように設定してよいのか
よく分からないようなのであれば、
 
・レポート上のグラフの値集合ソースとして
 設定しているクエリの SQL ビュー
 (もしくは SQL ステートメント)の内容
 
・抽出条件を指定するための非連結コンボボックスの名前、
 及びそのコンボボックスを配置しているフォームの名前。
 
以上を明記されることをお奨めします。

トピックに返信