Microsoft Access 掲示板

Dsum関数の使い方

5 コメント
views
4 フォロー

分割フォーム上で、フィルターをかけて抽出している状態のまま、ボタンをおすと非連結テキストボックスに特定フィールドの合計をだしたいのですが、どうしたらいいのかわかりません。
Dsum関数をつかい、そのテーブルのすべてのフィールドの合計は出せるのですが、分割フォーム上でフィルターをかけた状態の合計金額を出したいので、検索条件をどのように記述すればよいか教えて下さい。
フィルターは別のボタンで、さまざまなフィールドでフィルタリング、またそれらを組み合わせて複数条件のフィルタリングができるようにしています。

hassy-hhh
作成: 2020/12/11 (金) 08:54:40
通報 ...
1
hiroton 2020/12/11 (金) 09:11:13 09202@f966d

単にテキストボックスのコントロールソース=Sum([フィールド名])とすればフォームのフィルターに合わせて自動で計算できますよ

3
hassy-hhh 2020/12/11 (金) 12:32:20 bf909@6eb0c >> 1

ご教授ありがとうございます。できました。
が、この機能をボタンを押したときだけ集計するようイベントプロシージャを記述したいのですが、VBAで同じものを記述すると機能してくれません。どうすればよろしいでしょうか。

2
hassy-hhh 2020/12/11 (金) 12:22:49 bf909@6eb0c

ご教授ありがとうございます。できました。
が、この機能をボタンを押したときだけ集計するようイベントプロシージャを記述したいのですが、VBAで同じものを記述すると機能してくれません。どうすればよろしいでしょうか。

4
hiroton 2020/12/11 (金) 13:29:13 09202@f966d

まず、それ自体を表示することが目的なら、フィルタの内容を変えてからボタンを押すまでフォームの表示内容と乖離してしまうのでワンステップ置くような仕組みはオススメしません

別な場所に値をコピーしたいという用途ならそのテキストボックスの値を取得すればいいでしょう(テキストボックスは非表示でもかまいません)

total = Me!○○フィールドの合計

フィルタの実行と同時に取得したい(しかもその処理が結構重い)とかだと、total = Me!○○フィールドの合計の処理がうまくいかないこともあるようなので、そういう時ならばDSum関数を使って第三引数でフォームのフィルタと同じ条件を指定すればいいでしょう

total = DSum("フィールド名", "テーブル名", Me.Filter)
5
hassy-hhh 2020/12/11 (金) 13:43:25 e48ae@6eb0c >> 4

ありがとうございます!!Me.Filterでできました。思っていた通りになりました!!