成績処理システムで 3 年生のテストの特定の回だけが一覧に表示されない

問い合わせ

成績処理システムで 3 年生のテストの特定の回だけが表示されない。

対応

テーブルに記録されているデータを比較したところ、テストの情報の学期と、点数のデータの学期が一致していなかった。

テストの情報の学期を、データの学期に合わせたところ、正常に表示されるようになった。

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

問い合わせ

成績処理システムの「調査書作成委員会用資料」の「前期用」や「後期用」をクリックすると、エラーで 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 として挙動がどこか間違っている気がする。

成績処理システムが動作しない

問い合わせ

成績処理システムのクライアント用データをパソコンに入れたのだが、動作しない。

対応

パソコンの中に入っているデータは確認していないが、もとになったデータを見たら app_config の情報が明らかに間違っていたので直す。

その後、パソコンにクライアント用のデータをコピーして実行したが、動作しない。

エラーメッセージは、見た感じ参照設定が間違っている感じだったが、Office のビット数を調べたら、64 ビットだった。これでは動作しない。

32 ビット版に入れ替えてもらうように頼んでおいた。

成績処理システムで地域別の名簿で名前が 2 回出てくる

問い合わせ

成績処理システムの地域別名簿を印刷したら、生徒の名前が 2 回出てくる。

対応

データ部分を確認し、同じ生徒が 2 件記録されているわけではないのを確認した。

その後、大地区、中地区、小地区の情報について確認したら、中地区に同じ地名が 2 件記録されていることが分かった。

しかも、中地区の番号が本来学校が想定しているものと異なり、かなりめちゃくちゃ。

仕方がないので、担当の先生とデータを正しく入力しなおした。

その結果、名簿に関しても正常に印刷できるようになった。

テスト結果を見ると、数学と社会が同じ点数になっている

問い合わせ

成績処理システムで、生徒のテスト結果を見ると、特定の組だけ数学と社会の点数が同じになっている。

対応

現地へ行って確かめたが、確かに数学と社会の点数が同じ。しかも、特定の 1 つの組だけそうなっている。

取り込んだという Excel のデータを確認したが、数学と社会は別々の点数が入っている。

試しに、もう一度 Excel のデータを取り込んでみたら、正常になった。

この時点でよくわからないのだが、試しにデータのバックアップを取り、該当のテスト結果を消し、再現できるものなのか調べてみた。

しかし、考えられる限りのパターンを試したが、取り込み条件が正しくないため全く表示されないか、正しく表示されるかのどちらかであり、今回のような数学と社会の点数が同じになる現象は再現されなかった。

仕方がないので、原因は不明だが直ったのでそれで使ってもらうように説明し、帰ることにした。

成績処理システムでテスト結果の順位変動の数値がおかしくなる

問い合わせ

成績処理システムで 3 年生のテスト結果の順位変動がおかしくなる。

順位としては、3 回目のテストの順位が全員 0 番目になっている感じがする。

今まで 3 回分のテストを実施予定だったが、2 回目を行っていないのが影響しているかもしれない。

対応

実際の動作を確認したら、間違いなくそうなっていた。

2 回目のテストの結果が入っておらず、実質 0 なのが影響しているのかと思い、2 回目のテストに無理やり 1 回目のテストを入れてもらったが、いまいち改善せず。

試しに 1 回目から順に 1, 2, 3 回目の学年順位などを再度表示し、システム上で再計算させたところ、正常に表示されるようになった。

2 回目のテストについては、実施していないがとにかく点数を入れておいてもらうように頼んでおいた。

要録の学級の部分が A,B,C 組で表示されない

問い合わせ

成績処理システムの学級の部分が、A, B, C ではなく 1, 2, 3 で表示されてしまう。

ちゃんと詳細設定の部分は設定を変更しているのに、反映されない。

対応

詳細設定の設定内容に応じて、1, 2, 3 を書き換える処理をつけ忘れていた。

修正して動作確認をしてもらう。

成績処理システムで学年ごとの順位などが表示されない

問い合わせ

成績処理システムで、学年ごとの順位などを表示するボタンをクリックすると、エラーが出て動作しなくなる。

エラー内容は「Null の使い方が不正です」みたいなエラー。

対応

調べてみたら、転校した生徒の情報が残っており、名前が空欄であった。

テーブル設計がアレなので、空欄が Null 扱いになっており、エラーという挙動になるらしい。転校した生徒の情報を消すこともできないらしいので、適当な名前を入れてもらっておいた。

要録の文章が途中までしか取り込めない

問い合わせ

成績処理システムに取り込ませる要録用の Excel ファイに書いた文章が途中までしか取り込めない。

そんため要録を印刷すると、文章が途中で切れている。

対応

Access 側の仕様で、特に何も指定しない場合、Excel の各セルから取り込む文字列の長さは 255 文字に制限されいてる。

今回は、Excel 上の 1 件目の生徒の文章が空であり、255 文字以内だったので、それ以降のデータもすべて 255 文字までの取り込みとなっていた。

試しに、1 件目の生徒に 255 文字以上の文章を記入し取り込ませたところ、正常に取り込むことができた。

飯島先生に確認したが、この現象については一応周知はしてあったらしい。

過去のデータが見られない

問い合わせ

app_config.ini を変更しても、成績処理システムが起動しない。

対応

現場に行って確認したが、app_config.ini に指定されたパスにデータ部の Access ファイルが存在しなかった。

幸い、別のフォルダーに移動されていただけなので、app_config.ini のパスを変更して対応した。