- ベストアンサー
DSumの計算式の入れ方
アクセスでDSumの式の入れ方が分からないので教えてください。 振込み日07年10月21日以前の振込み金額をすべて集計させたいのですが式の組み方が良く分からないので教えてください。 項目名は『振込み日』で集計する項目名は『金額』で07/10/21以前のものをすべて集計の場合の式を教えてください。 =DSum([振込み日],[金額],07/10/21) ??? となるのでしょうか?
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
#3です。 > 金額出てきました。 であれば、条件式がおかしいか、テーブルのデータがおかしいのでしょう。 テーブルの「振込み日」のフィールドをチェックすべきでしょう。 1.フィールド名が「振込み日」であるか確認。 2.フィールドのタイプをチェック。「日付時刻型」か「文字型」か。 3.「振込み日」フィールドに妙なデータ(日付)が入っていないか確認する。 DSum関数は、外部(そのフォームやレポート関連づけられていない)のテーブルやクエリのデータを集計できる関数です。 書式は、DSum("集計するフィールド名","テーブル/クエリ名","抽出条件")で、 全て文字列で指定します。 今回は、抽出条件がうまく設定されていないようです。 検索する相手のフィールドが文字型である場合は、 DSum("金額","手形","品名='みかん'") のように、検索する文字列を「'」(シングルコーテーション)でくくらなくてはいけません。 もし、相手が日付型で、かつフォームのテキストボックスに入力した内容を使って絞り込む場合は、 =DSum("金額","振込","振込み日 <= " & CDate(Me.日付) とか =DSum("金額","手形",BuildCriteria("振込み日", adDate, "<=" & Me.日付)) のようにします。 BuildCriteriaは、抽出条件を正しい形で文字列化してくれる関数(メソッド)です。 > ("金額,"手形")-("貸し方","手形")…なんて感じの式なんてできますか? できます。 関数で計算された数値は、通常の数値と何ら変わりはないので、 DSum ("金額,"手形")-DSum("貸し方","手形") などと計算させることができます。当然、それぞれ条件も指定できます。 DSum ("借り方,"手形","日付 Between 2007/10/1 And 2007/10/31")-DSum("貸し方","手形","日付 Between 2007/10/1 And 2007/10/31") などとすることも可能です。 日付の場合、#2007/10/31#と「#」でくくる必要があるかも...
その他の回答 (5)
#2です。 テストとして、 =DSum("金額","手形") として、条件をなしにしてやってみてください。 条件はともかく、金額が表示されるなら、条件指定がおかしいことになります。
補足
回答ありがとうございます!金額出てきました。それで質問なのですがこれは指定がないのでトータルの金額になりますよね?それでも多分OKなのですが(すみません、DSumで何ができるのか良く分からなかったので遠回りしてるのかも…)この式の中で足し算・引き算ってできますか? ("金額,"手形")-("貸し方","手形")…なんて感じの式なんてできますか? 画面に表示させたい内容は一ヶ月分なのですが金額的にはトータルとか指示した期間でとか出したいのですが…。
#3です。 > 早速入れてみたのですが…エラーに… おかしいですね。エラー内容を提示していただけると、手がかりになるのですが... #2さんが、「振込み日が日付項目で定義されているとしてですが。。。」と心配されていますが、 案外、文字項目で設定されていることもあり得るので、 =DSum("金額","手形","振込み日 <= '2007/10/21'") か =DSum("金額","手形","振込み日 <= '20071001'") で試してみてください。
補足
回答ありがとうございます。やってみましたがやはりエラーに…。式を入力した時点では何もでないのですがプレビューで出すと『#エラー』となります。。。
数式の中身は、対象となるテーブル名が「振込」と仮定して、 =DSum("金額","振込","振込み日 <= 2007/10/21") です。 「[」や「]」は一切要りません。 =DSum("金額","振込",BuildCriteria("振込み日", adDate, "<=2007/10/21")) のほうが、失敗がないかも... DSum等は、レポートやフォームに使う方が一般的です。 クエリでは、クエリ自体で絞り込みを行うので、Sumを使います。
補足
早速の回答ありがとうございました。[ ]とかいらないんですか?! …勉強になりました。早速入れてみたのですが…エラーに…。レポートでDSumを使います。どこか打ち間違えてるんだと思うので再トライしてみます。
- kirara77
- ベストアンサー率25% (117/464)
初めまして。 テーブル名はどうしましたか? =DSum([金額],"テーブル名",[振込み日]<=#2007/10/21#)で如何でしょうか? この場合は、振込み日が日付項目で定義されているとしてですが。。。
補足
早速の回答ありがとうございます。テーブル名は『手形』です。式を入れてみたのですが数字が変になってしまうんですよねぇ。式を入れるところってレポートヘッダーかフッダーであってますか?
- mshr1962
- ベストアンサー率39% (7417/18945)
DSum("集計項目","テーブル/クエリ名","抽出条件")ですが例の場合だと =DSum("[金額]","テーブル名","[振込み日]<=#2007/10/21#") 日付が非連結テキストボックスに書き込まれている場合は =DSum("[金額]","テーブル名","[振込み日]<="& CDate([テキストボックス名]))
お礼
早速の回答ありがとうございます。式を入れてみたのですがなぜか1行目の2倍の数に…。何か入れ間違えてるんでしょうか?
補足
お世話になります。式の入力間違いかと思って何度か入れなおしたりしたのですがやはりどうも最初の1行目X登録した行数の金額になってしまいます。(最初の1行目の金額が450,430だとして入力したのが7件あると3,153,010になってしまいます) どうしてこんな数字になってしまうのか分かりますか?
お礼
丁寧にありがとうございます。どうやら3.のようです。どれが影響してたのかはよく分からないのですが日付を打ち直して再トライしたら出てきました。ありがとうございます。スゴイ助かりました!これでどうにかできそうです。どうもありがとうございました。