Accessのリンクテーブルのデータがすべて#deletedになった話

本日、MicoroSoft Accessのフォームのデータが、突然すべて「#deleted」の表示になったと相談が。それまでは正常に使えていたとのこと。

このデータ、ODBCSQL Serverにリンクしているのですが、テーブルを開いてみるとすべてのデータが#deletedになってるし。

 

データが全部消えちゃったのかな、#deletedがたくさん表示されたままだから、見た目が変になっているだけなのかな、という期待と不安の中、Management Studioでデータを確認。幸いすべて残っておりました。

 

この症状、発生しているのは複数台のクライアントPCのうち1台のみ。

Access ODBC リンクテーブル #deleted」でググると、bigintがdatetime2がという記事があったので、それに従い修正を試みるも解決せず。そもそもそんなデータ型使った覚えないし。

 

その後もググり読み進めていると、主キーが原因に思える記事が。

Select Distinctでクエリを書いてみると、

データが正しく表示されるではありませんか。

まさか主キーがかぶってるの・・そんなことはないでしょうよ。

 

そして、エラーが発生するテーブルとそうでないテーブルの構造をじっくり見比べること、

発見しました!

主キーの型がnvarcharのテーブルがエラーになっている。

 

その主キーのデータは英数字だけなので、型をvarcharに変更し、

Accessでリンクの更新をおこなうと、

はい、正常に表示されました。

 

結局のところ、はっきりした原因はわからず、対処療法になりましたが、

Unicodeが影響しているんでしょうか。

クライアントの環境はOffice365最新ヴァージョンの64bitです。