成績処理システムの調査書の機能が使用できない

問い合わせ

成績処理システムの「調査書作成委員会用資料」の「前期用」や「後期用」をクリックすると、エラーで Access が止まる。

エラーとしては「スタック領域の不足」である。

対応

正直、原因が分からない。

以下のことを試したが、改善しない。

  • Office の修復
  • Windows の修復 (DISM, sfc)
  • Access ファイルの最適化

問題となるのは、レコードソースを実行するタイミングである。

これを実行すると、スタックが不足するらしい。一般的にスタックの不足は再帰処理なのだが、再帰的は処理は行っていないと思う (たぶん)。

また、クエリーを強制的に Access で実行すると、Access 自体が落ちる。

これも原因は不明。


一応、Office を入れなおすことを検討している。

Office を入れなおしても状況は改善しなかった。


問題が発生しているクエリーを丁寧に検証したところ、WHERE 句でエラーが発生する、というか WHERE で特定の値で絞り込みを行おうとすると、Access 自体が落ちるということが分かった。

問題は、WHERE がなければ正常に表示されるし、NULL、NOT NULL という条件ならば落ちないことである。

データを見ても、どこが正しいか・間違っているのかは分からないので、正常に動く学校のデータを見て検証する必要がある。


正常に動く学校のデータを見ても違いが分からなかった。

ただ、WHERE 句なしのデータを XML で抽出したところ、一部レコードのデータで WHERE 句に関係するフィールドが存在しなことが分かった。

そのため、事前に WHERE で学年を 3 年のみに絞り込み、無理やり動作させることで解決した。

結局、データがおかしいことは確定なのだが、どこがどう間違っているのかは全く分からない。


というかなぜ Access は LEFT JOIN で結合したときに、特定のフィールドが存在したり・存在しなかったりするテーブルが作られるのだろうか。

DB として挙動がどこか間違っている気がする。