日別アーカイブ: 2009年7月28日

Accessテーブルで#Deletedレコードが消えない

Microsoft Access を使って簡単なツールを作って社内で使っているんだけど、ユーザーから「データが削除できない!」って連絡があった。

見てみると、

  • 問題になっているのはテーブルのデータ
  • テキストフィルタで対象を抽出する事が出来るんだけど、全ての列が「#Deleted」になっている
  • 行を指定して削除を実行しても、再度検索するとまた表示される
  • 再起動させても状況は変わらない

「#Deleted」はフォームを開いている状態でレコードをテーブルから削除したときに表示されるのはわかっているが、リンクを張っているわけでもないテーブルのデータが直接そういう状態になっているのは初めて見た。
複数の人間が同時にテーブルにアクセスしている中で、どっかの誰かが処理例外でも引き起こして中途半端な状態が出来あがってしまったのだろうか?結局原因はわからなかった。
とりあえず四苦八苦して対処方法を考えてみたがいい方法が浮かばず、最終的には「Accessのテーブルぶっ壊れた」として、

  1. 新規のAccessファイルを作成
  2. 外部データ取り込みを利用して対象のMDBからインポート

を実行。「#Deleted」はシステム的なレコードなのでインポートした段階で既に無くなっており、不正な状態は解消された。
それにしても…やはりAccessを多人数で使うのは無理があるか。Oracleに乗り換えたいところではあるが、ライセンス費用もばかにならないので苦しいところだなぁ