Accessのバグ


テーブルのバグ

バージョン:2.0(他のバージョンも該当の可能性有り)
症状:複数端末でデータベースを共有してデータ入力する時、タイミングが偶然にバッティングすると、複数端末がオートナンバー型のフィールドで同じナンバーを付けてしまい、エラーになることがある。
原因:Accessのバグらしい。
回避法:オートナンバー型の使用をやめ、数値型(長整数型)で「インデックス」プロパティを「はい(重複なし)」にする。フォームの「挿入前処理」に、そのフィールドにDMax()関数を利用して連番を振るマクロ/モジュールを指定すれば自動的にナンバーを振れる。(端末毎に番号がかち合わないようにするには、端末毎に固有の番号を、例えば千万の位とか一億の位に付ける方法がある。番号を取得する部分を関数として作っておくと便利である。)


サブフォームのバグ

バージョン:2000
症状:3つのテーブルが順番に一対多リレーションするテーブルを基に、フォームウィザードでサブフォーム形式でフォームを作成すると、リレーションの2段目の分のサブフォーム(上下2つのうち上の方)でレコードの削除を行うとハングアップする。
原因:上のサブフォームのレコード移動時イベントで、下のサブフォームの再クエリをかけているのですが、上のサブフォームを削除する時にも、「削除前確認」「レコード削除時」よりも前に「レコード移動時」イベントが発生しているようです。ここでハングアップしています。
回避法:まだわかりません(ごめんなさい)。手動のレコード削除を禁止し、VBAでレコード削除を実行、その際にはフォームウィザードの吐き出したコードでの再クエリの部分を禁止する。これが手っ取り早い解決策ですが……


Visual Basic Editor/モジュールウィンドウのバグ

バージョン:2000
症状:Visual Basic Editorの、プロジェクトエクスプローラやプロパティウィンドウのフォントが変なフォントになる。
原因:Microsoft確認済のバグです。
回避法:修正パッチがMicrosoftのホームページからダウンロードできます。

バージョン:95
症状:モジュールウィンドウの、特定の大きさで特定文字のフォントが化けてしまう。また、モジュールウィンドウ以外でも、その同じ大きさで同じ文字のフォントが化けている。
原因:バグらしい。どうやらオブジェクト名に漢字、特に特殊記号を使ったのが原因らしい?
回避法:面倒ですが、Windowsを上書き再インストールするとフォント化けが直ります。また、Accessには最新パッチを当てておきます。でも本当は、Access95はAccessの中でも比較的不安定なバージョンなので、なるべく2.0/97/2000を使った方が安定します。


バージョン変換のバグ

バージョン:2000
症状:古いバージョンのMDBファイルを2000形式にコンバートすると、モジュールでエラーが発生する。
原因:大きなプログラムの時、モジュールのプログラムにゴミが入る事があり、そこでエラーが発生します。
回避法:分割してコンバートすれば大丈夫です。エラーが発生したモジュールだけ、古いバージョンの原本から、古いバージョンの空のデータベースへインポートして移しておき、それを2000形式にコンバートします。ゴミの発生したモジュールを、このデータベースに含まれるモジュールに交換します。


モジュールのバグ

バージョン:2000
症状:突然、フォームやレポートやモジュールが開けなくなる。
原因:Accessのモジュール管理のバグです。
修復法:まずは、現状のデータベースをバックアップしておきます。「最適化/修復」をかけると修復不可能になることがあるので気を付けましょう。次に、空のデータベースを用意し、全オブジェクトをインポートして移します。時にはこれで直ることもあります。また、フォームは開けないしモジュールの中身は表示できないけど、Visual Basic Editorのプロジェクトウィンドウを使って、モジュールを.clsファイルとしてエクスポートならできる場合があるので、その場合かろうじてコードだけは救出できます。
 Accessは、2000になってからモジュールが壊れやすくなってしまったので、皆さん十分注意してください。バックアップはこまめに。


戻る