Access VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


2098 / 2272 ツリー ←次へ | 前へ→

【3891】なぜDSUMができないんでしょうか? えなりん 04/11/25(木) 17:17 質問[未読]
【3894】Re:なぜDSUMができないんでしょうか? YU-TANG 04/11/25(木) 18:37 回答[未読]
【3898】Re:なぜDSUMができないんでしょうか? えなりん 04/11/26(金) 8:30 お礼[未読]
【3908】Re:なぜDSUMができないんでしょうか? YU-TANG 04/11/27(土) 3:33 回答[未読]
【3924】Re:なぜDSUMができないんでしょうか? えなりん 04/11/30(火) 15:41 お礼[未読]

【3891】なぜDSUMができないんでしょうか?
質問  えなりん  - 04/11/25(木) 17:17 -

引用なし
パスワード
   初歩∞な質問で大変恥ずかしいですが・・・DSUM関数が使いこなせないのです。
累計を求めたいのに、なぜか全体の合計ばかりが表示されます。
ご伝授ください!
(ACCESS2000)

【収支台帳】テーブル
ID 収支年月日 科目 金額
1  04-10-10 雑費 30,000
2  04-10-27 雑費 20,000
3  04-11-10 雑費 30,000
4  04-11-11 雑費   500
5  04-11-11 雑費   500
6  04-11-13 雑費 10,000

クエリーで収入年月日を元にした累計を求めようと、
累計: Val(DSum("金額","収支台帳","収支年月日 <= #" & [収支年月日] & "#"))
というフィールドを作りました。
すると、
収支年月日 科目 金額  累計
04-10-10 雑費 30,000 91,000
04-10-27 雑費 20,000 91,000
04-11-10 雑費 30,000 91,000
04-11-11 雑費   500 91,000
04-11-11 雑費   500 91,000
04-11-13 雑費 10,000 91,000
という結果になりました。

【3894】Re:なぜDSUMができないんでしょうか?
回答  YU-TANG WEB  - 04/11/25(木) 18:37 -

引用なし
パスワード
   こんにちは、YU-TANG です。

> 累計: Val(DSum("金額","収支台帳","収支年月日 <= #" & [収支年月日] & "#"))

累計: Val(DSum("金額","収支台帳","収支年月日 <= #" & Format$([収支年月日],"yyyy\/mm\/dd") & "#"))

…とか。

【3898】Re:なぜDSUMができないんでしょうか?
お礼  えなりん  - 04/11/26(金) 8:30 -

引用なし
パスワード
   YU-TANGさん ありがとうございます。

できました!
Format$([収支年月日],"yyyy\/mm\/dd") がポイントなんですね。

色々読んだ資料では、どれも
Val(DSum("金額","収支台帳","収支年月日 <= #" & [収支年月日] & "#"))
だけだったのに、なぜformatが必要なんでしょう。
テーブルの作りに違いがあるのでしょうか?

【3908】Re:なぜDSUMができないんでしょうか?
回答  YU-TANG WEB  - 04/11/27(土) 3:33 -

引用なし
パスワード
   こんばんは、YU-TANG です。

> なぜformatが必要なんでしょう。

[収支年月日] に「04-10-10」のような形で(おそらく日付/時刻値の)
データが表示されているようですが、これをそのまま日付リテラルに
するとどうなるか、一度実際にイミディエイトウィンドウ上で試して
みる(「?#04-10-10#」で【Enter】)ことをお勧めします。

日付の表記は各国さまざまで、日本では「yyyy/mm/dd」あるいは
「yy/mm/dd」が主流ですが、これは世界的に見ると圧倒的にマイナー
な(要は、ちょっとヘンな)表記法に過ぎず、米国では「mm-dd-yy」、
英国では「dd-mm-yy」が一般に使われています。
「04-10-10」は、アメリカ人が見ると「2010 年 4 月 10 日」という
意味だと解釈します。
Access(VBA)は元来がアメリカ産の製品なので、米国式で矛盾せずに
解釈できる日付は、優先的に米国式で解釈します。

# でないと、日付を正しく解釈しないという苦情がアメリカ中から
# M$ に殺到することになります。

Format$([収支年月日],"yyyy\/mm\/dd") のような関数式で年号を
4 桁表記にすることによって、米国式ではなく日本式であることを
(アメリカ人である Access に対して)明示しているわけです。

Access を使うということは、アメリカ人(の文化)を相手にしている
のだということを忘れないことが、うまくつきあうコツだと(個人的
には)思います。

【3924】Re:なぜDSUMができないんでしょうか?
お礼  えなりん  - 04/11/30(火) 15:41 -

引用なし
パスワード
   お礼が大変遅くなりまして申し訳ございませんでした。

ご説明、とても納得いたしました。
「100へぇ〜」な感じです。(古い?)

ありがとうございました。

2098 / 2272 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
1078229
(SS)C-BOARD v3.8 is Free