レポートにおけるエラー発生の回避策についてです。
まず、対象となるエラーを再現してみます。
右のようなテーブルがあります。
クエリで次のような列を設けます。つまり「点数」列の値に基づきサブクエリによって順位を算出します。
順位: (SELECT COUNT(*) FROM 成績テーブル AS 成績テーブル_1 WHERE 成績テーブル_1.点数 > 成績テーブル.点数)+1
データシートビューです。点数の高い順に1から順位が表示されています。
次に、このクエリをレコードソースとするレポートを作成します。
特に難しいところはないレポートですが、グループヘッダーを置いている点に注意してください。
さて、このレポートを印刷プレビュー等で表示しようとすると、「サブクエリでは、マルチレベルGROUP BY句は使用できません。」というエラーが出ます。
このエラーはたいていサブクエリのあるクエリと、グループヘッダーのあるレポートの組み合わせで起こります。いずれにせよクエリには異状はなく、それをそのままレポートに流しただけなのにエラーとなってしまうという事態はどうも腑に落ちませんし、苦労して作ったサブクエリが役に立たないという困った事態に陥ってしまいます。
そこで対策ですが、最初に作ったクエリに基づく別のクエリを作成します。出力する列も全くそのままです。
ただし、このクエリでグループ化を行ってください(この例の場合、グループ化しなくともエラーは回避できますがレポートでの順位の表示がおかしくなるなど不具合が出ます。また、最初のレポートでグループ化しようとするとクエリそのものがエラーとなります)。
このクエリをレコードソースにすると、レポートは無事に表示されます;-o-)
なお、サブクエリではなく定義域集合関数(この例ではDCount関数)を用いるといった対策も考えられますので、状況に応じて選択してください。