dポイントプレゼントキャンペーン実施中!

お世話になっております。
クエリウィザードで四半期の合計を作成すると、売上日のフィールドはこのようになります。

"第 " & Format([売上日],"q") & " 四半期"

これですと、年度が関係なくすべてのデータが四半期に振られるだけですので、年度ごとに表示させたいと思います。

4月期ですので、フォームのテキストボックスに、2008/04/01と2009/03/31というデータがあれば、その間の四半期データを表示させたいです。
(第一四半期が4、5、6月です)

ご教授いただければ幸いです。
よろしくお願いいたします。

A 回答 (6件)

ちょっと微妙に書き方が変でした。


実際には
Between [Forms]![フォーム1]![開始年月日] And [Forms]![フォーム1]![終了年月日]
となると思いますので、
登録するパラメータも
[Forms]![フォーム1]![開始年月日]
[Forms]![フォーム1]![終了年月日]
ですね
    • good
    • 0
この回答へのお礼

お世話になっております。
パラメータの設定をすればクロス集計クエリでのエラーがなくなりました。
同様に集計クエリでもできました。
詳しく書いていただき、大変勉強になりました。
ありがとうございました。

お礼日時:2008/10/16 20:24

下の式で年度と四半期が求まります



年度: Year(DateAdd("m",-3,[日付]))
期: "第 " & Format(DateAdd("m",-3,[日付]),"q") & " 四半期"


>たとえば適当なフォームのコンボボックスで年度を選べば、その年の四半期が表示するような感じです。
年度の抽出条件欄に
Forms!フォーム名!コンボボックス名
    • good
    • 0
この回答へのお礼

ご回答ありがとうございました。
この方法でもできました。ありがとうございました。

お礼日時:2008/10/16 20:26

>ご指示の通りパラメータクエリをやってみましたが、”[開始年月日を入力してください]を有効なフィールド名または式として認識できません。

”というエラーが出ました。

クロス集計は、パラメータでデータ型を明確に指定しないとそのうなるようです。
私はクロス集計を余り使うことが無いので 集計クエリと思い込んでいました。
>そこで、選択クエリでBetweenを実行したところ、成功しました。
>しかし、選択クエリでは期間の抽出はできても、四半期の集計ができませんでした。

集計クエリでは問題なく成功します。(集計クエリでテストしていました)
クエリのデザイン時に シグマのマークのツールボタンがあると思います。
合計したい項目を集計:合計にすれば 四半期の集計ができます。

さて、クロス集計ですが・・
この内容を クロス集計にされている具体的な内容はわかりませんが・・
>Between [Forms!フォーム!開始年月日] And [Forms!フォーム!終了年月日]のような物をクエリのどこかに書けば良いのでしょうか。
これは、内容も問題ないです。
書くのも、先の内容のように新たな列に 売上日を指定して Where条件とします。

これだけでは、同じようにエラーとなります。
クエリのデザイン画面に、パラメータのツールボタンがあると思います。
これをクリックするとパラメータの指定が開かれます。
ここに
[Forms!フォーム!開始年月日] 日付型
[Forms!フォーム!終了年月日] 日付型

の様に、指定しておけば クロス集計でもエラーになりません。
    • good
    • 0

訂正です



方法
1.現在のクエリの最後の列に テーブルから、フィールド売上日を指定してください。

最後の列ではなく、最後の列の右側の事です(新しい列)
    • good
    • 0

>たとえば適当なフォームのコンボボックスで年度を選べば、その年の四半期が表示するような感じです。



そうですね・・
コンボボックスの名称とか色々具体的であれば ピンポイントに
書きだせますが ちょっと漠然としていますね。
クエリー上では、売上日をWhere 条件でその年度の範囲で絞りこむ記述をする形になります。
フォームはちょっと置いておいて クエリーに手を加える形で実現できる方法を書きますのでトライしてみてください。
パラメータと言う機能を使います。
クエリーを実行すると、まず「開始年月日」を聞いてきます。
次に「終了年月日」を聞いてきます。
それぞれ 2008/04/01 2009/03/31の様に入力します。

方法
1.現在のクエリの最後の列に テーブルから、フィールド売上日を指定してください。
2.集計部分は、「Where条件」を選んでください。
3.表示は、チェックをしません。
4.条件は以下をそのまま書いてください。
Between [開始年月日を入力してください] And [終了年月日を入力してください]

これで、クエリー実行時に会話式に自由に設定可能です。
単一年度・複数年度 指定次第でどのようにもなります。

補足:
フォームでするとなると、例えばそのコンボで 2008を選んだ場合
2008/04/01と2009/03/31を生成しないといけません。
フォーム上で非表示のエリアに生成する事も出来るし、関数で用意して
クエリー上で直接利用も考えれますが、いずれにしても もう少しデータベース(SQL言語)自体を把握されないと 説明が難しいかなと感じます。
今回の方法は、たぶん色々な市販書にも書いてある「パラメータクエリ」に成ります。
先ずは、クエリーで(フォームを絡めず)実現されてみては如何でしょうか。

この回答への補足

お世話になっております。
最初に書き忘れたのですが、今回作ったのはクエリウィザードから作成したクロス集計クエリになります。

ご指示の通りパラメータクエリをやってみましたが、”[開始年月日を入力してください]を有効なフィールド名または式として認識できません。”というエラーが出ました。
ご指示では、”3.表示は、チェックをしません。”とありましたが、クロス集計クエリにはチェック欄はありませんでした。

そこで、選択クエリでBetweenを実行したところ、成功しました。
しかし、選択クエリでは期間の抽出はできても、四半期の集計ができませんでした。

コンボで2008を選んだ場合、2008/04/01と2009/03/31を生成するのはVBAで書けますので、
Between [Forms!フォーム!開始年月日] And [Forms!フォーム!終了年月日]のような物をクエリのどこかに書けば良いのでしょうか。

VBAはある程度わかりますが、SQL言語はわかりませんので申し訳ございません。
またご教授いただければ幸いです。
よろしくお願いいたします。

補足日時:2008/10/15 23:48
    • good
    • 0

もっとスマートな方法もあるのでしょうが ゴリゴリと書きました。



IIf(Month([売上日])<=3,Year([売上日])-1 & "年 4期",IIf(Month([売上日])<=6,Year([売上日]) & "年 1期",IIf(Month([売上日])<=9,Year([売上日]) & "年 2期",Year([売上日]) & "年 3期"))) AS 四半期

この回答への補足

ご回答ありがとうございました。
下記をフィールドに書けば2008年の四半期が表示されました。

式1: IIf(Month([売上日])<=3,Year([売上日])-1 & "年 4期",IIf(Month([売上日])<=6,Year([売上日]) & "年 1期",IIf(Month([売上日])<=9,Year([売上日]) & "年 2期",Year([売上日]) & "年 3期")))

あとこれを年度ごとに表示させたいと思います。
たとえば適当なフォームのコンボボックスで年度を選べば、その年の四半期が表示するような感じです。

ご指導いただければ幸いです。
よろしくお願いいたします。

補足日時:2008/10/15 21:35
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す