- 締切済み
Between関数とDateSerial関数の組み合わせ。
基本的な事で申し訳ありません。 Access2007にてデータベースを作っています。 テーブル[tblメイン] に[日付]と[問合数]があり、 日報用に、当月の累計を表示させたいのですが 計算用クエリ[qry計算用]を作り [日付][問合数]を移動させ [当月累計]を 式1: DSum("[問合数]","[qry計算用]","日付 between #DateSerial (year([日付]) ,month([日付]) ,1)# and #[日付]#") としてみたのですが 『クエリ式'日付 Between #DateSerial (year([日付]),month([日付]),1)# and #[日付]#'の構文エアr-:演算子がありません。』 と出てしまいます。 乏しい知識でいろいろとやってはいるのですが突破口が見当たりません。 何か分かるかたいましたらご指摘願います。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- nda23
- ベストアンサー率54% (777/1415)
先ずBetweenは関数ではありません。 また、クエリ内にDSumなど持ち込むのは意味がありません。 日付の指定は"#2010/03/10#"とするか、DateSerialなら DateSerial(2010,3,10)となります。 (1)クエリビルダを起動させ、tblメインを選ぶ。 (2)問合数、日付をグリッドにドロップする。 (3)ツールバーの「表示」→「集計」をクリックする。 (4)問合数の集計を「合計」にする。 (5)日付の集計を「Where 条件」にする。 (6)日付の抽出条件に「BETWEEN #2010/3/1# AND #2010/3/31#」と 記述する。 抽出条件の記述は他にMonth(日付)=3のような方法もあります。 また、(5)の日付を上記のように「月:Year(日付)*100+Month(日付)」とし、 集計を「グループ化」にすると、年月別の問合数合計が得られます。
- ShowMeHow
- ベストアンサー率28% (1424/5027)
datesrial(a,b,c) は既に日付型ですので、 #はいりません。 なにをどのようにグループ化して合計させているのかがよくわかりませんので、正確なsqlはかけませんが SELECT Sum(tblメイン.f1) as 合計 FROM tblメイン HAVING ((tblメイン.日付) Between between DateSerial (year([日付]) ,month([日付]) ,1) and [日付]) のような形になると思います。 また、フォーム上?の[日付]とテーブル上のtblメイン.日付も混乱の原因になりそうなので、別名にするほうが無難です。
お礼
ありがとうございます。 お礼が遅れて申し訳ありません。 何がしたいのか?というのがはっきりしていなかったのにお返事ありがとうございます。 [日付][問合数]を入力するフォーム上で [日付]の月の1日~[日付]までの累計数を適宜表示させたい。 というのが目的です。 フォーム上で過去のデータをみた際にも入力時点での累計データが 見れるように(印刷できるように)したいです。 (確認できて、印刷できるのであればレポートでもかまいません。) パソコンが慣れてない人でも簡単に入力できる様に 適宜月を入力するとかはしない方向で設定したいです。 その為に。 ・Dsumの項目を作るためにクエリ[qry計算用]を作り ・Dsumの日付の指定日に、入力した[日付]からその月の1日を抽出 ・Betweenで1日~入力した[日付]を指定してみた。 という試行をしたのが質問内容です。 フォーム上の日付もテーブル用の日付も 入力した『日付』と指定の[日付]の問合数日付は別で 入力日付は基本的に記録しない方向で考えています。 つたない日本語で申し訳ありません。
お礼
ありがとうございます。 関数、関数ととらわれすぎていたようで 勘違いしておりました。 こんな方法もあるものと勉強になりました。