Accessのリンクテーブルのデータがすべて#deletedになった話
本日、MicoroSoft Accessのフォームのデータが、突然すべて「#deleted」の表示になったと相談が。それまでは正常に使えていたとのこと。
このデータ、ODBCでSQL Serverにリンクしているのですが、テーブルを開いてみるとすべてのデータが#deletedになってるし。
データが全部消えちゃったのかな、#deletedがたくさん表示されたままだから、見た目が変になっているだけなのかな、という期待と不安の中、Management Studioでデータを確認。幸いすべて残っておりました。
この症状、発生しているのは複数台のクライアントPCのうち1台のみ。
「Access ODBC リンクテーブル #deleted」でググると、bigintがdatetime2がという記事があったので、それに従い修正を試みるも解決せず。そもそもそんなデータ型使った覚えないし。
その後もググり読み進めていると、主キーが原因に思える記事が。
Select Distinctでクエリを書いてみると、
データが正しく表示されるではありませんか。
まさか主キーがかぶってるの・・そんなことはないでしょうよ。
そして、エラーが発生するテーブルとそうでないテーブルの構造をじっくり見比べること、
発見しました!
主キーの型がnvarcharのテーブルがエラーになっている。
その主キーのデータは英数字だけなので、型をvarcharに変更し、
Accessでリンクの更新をおこなうと、
はい、正常に表示されました。
結局のところ、はっきりした原因はわからず、対処療法になりましたが、
Unicodeが影響しているんでしょうか。
クライアントの環境はOffice365最新ヴァージョンの64bitです。