Access (VBA)

Access VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(その他 : Access 2010)
フォームのフォームフッター上のsumがエラーになる
投稿日時: 21/05/10 18:10:13
投稿者: 滝沢

営業社員別で、「2104」〜「2203」の、12ヶ月分の結果が集計されるクロス集計クエリがあります。
 
◎テーブル
営業名|年月|商品|金額|
−−−−−−−−−−−−−
佐々木|2104|林檎|1000|
佐々木|2104|西瓜|2000|
宇佐美|2104|西瓜|9000|
佐々木|2105|蜜柑|5000|
宇佐美|2105|西瓜|4000|
 
◎クエリ結果
営業名|2104|2105|・・・|2203|
−−−−−−−−−−−−−−
佐々木|3000|5000|・・・|
宇佐美|9000|4000|・・・|
 
このクエリをレコードソースにしたフォームのフォームフッターにテキストボックスを置き
値を「=sum(2104)」としましたが「#エラー」表示になってしまいます。
詳細セクションのテキストボックス名を「2104a」にして、フォームフッターのテキストボックスの値を
「=sum(2104)」や「=sum(2104a)」なども試しましたが、いずれも同じエラーになります。
 
ちなみに、昨年作成したフォームは正しい結果が表示されています。
テーブルは変わらずで、新しいクエリはクエリ列見出しを「2004,2005,・・・」から「2104,2105,・・・」
に変更し、それに併せてフォームも修正しただけです。
また、フォームビューでテキストボックス作成中は正しい結果が表示されます。
一度保存して開き直すとエラーになります。
解決方法はありますでしょうか。
 
よろしくお願い致します。

回答
投稿日時: 21/05/12 14:25:22
投稿者: sk

引用:
このクエリをレコードソースにしたフォームのフォームフッターにテキストボックスを置き
値を「=sum(2104)」としましたが「#エラー」表示になってしまいます。

同じフォーム上に「 SQL 集計関数の結果を返す演算テキストボックス」が
1 つ以上配置されている場合、そのうちいずれか 1 つの演算テキストボックスにおいて
呼び出されている SQL 集計関数がエラーを返していれば、そのフォーム上に配置された
全ての「 SQL 集計関数の結果を返す演算テキストボックス」において
エラーが返されることになります。
 
もし Sum 関数を呼び出している演算テキストボックスが 12 個あるなら、
それら 12 個全てについてエラーが返されないようにする
(式や名前、データ型の誤りを正す)必要があります。
 
したがって、1 つの演算テキストボックスだけに着目せず、
他の演算テキストボックスのコントロールソースについても
チェックされることをお奨めします。
 
引用:
=sum(2104)

この式だけに関して言えば、このままだと
「 2104 という数値を、フォームに表示されているレコードの件数で乗じた」
のと同じ結果が返されることになります。
 
(数字のみでフィールド名がつけられている状態というのが
非推奨ではありますが)フィールド名として解釈されるように
したいのであれば、[]で囲むようにしてください。
 
------------------------------------------------------------
 
=Sum([2104])
 
------------------------------------------------------------
 
引用:
ちなみに、昨年作成したフォームは正しい結果が表示されています。
テーブルは変わらずで、新しいクエリはクエリ列見出しを
2004,2005,・・・」から「2104,2105,・・・」
に変更し、それに併せてフォームも修正しただけです。

また、「年度が変わるごとにクエリやフォームを修正する」という
運用の方式もあまり推奨されません。
 
クエリ列見出しを固定しているクロス集計クエリであれば
「年度」を指定するクエリパラメータを設けて
集計対象となるレコードを絞り込むことも可能ですので、
クエリ/フォームのデザインを再考されることをお奨めします。

投稿日時: 21/05/12 21:25:08
投稿者: 滝沢

sk様
コメントありがとうございます。
結論からいうと直りました!
 

引用:
同じフォーム上に「 SQL 集計関数の結果を返す演算テキストボックス」が
1 つ以上配置されている場合、そのうちいずれか 1 つの演算テキストボックスにおいて
呼び出されている SQL 集計関数がエラーを返していれば、そのフォーム上に配置された
全ての「 SQL 集計関数の結果を返す演算テキストボックス」において
エラーが返されることになります。
こんなことがあるんですね!?
実は12個ともう一つテキストボックス(12ヶ月の合計)があり、これもエラーでしたが
後で考えようと思っていました。
今、このテキストボックスの式を適切に書き直したら全てのテキストボックスが正しく表示されました。
ありがとうございます。
 
引用:
=sum(2104)
こちらについてはここへの書き間違いで、元々「=sum([2104])」としていました。
 
引用:
また、「年度が変わるごとにクエリやフォームを修正する」という
運用の方式もあまり推奨されません。
確かに無駄だしミスが起きやすいので検討しようと思います。
 
諸々ありがとうございました。