Accdbでも発生を確認
前回の記事
Access 今日のトリビア Schema.iniでフィールド名をブランケットで囲むと()がつく
https://qiita.com/Q11Q/items/bd1382bea8bfae5d9d04
でとりあげた
Access 2002 以降のバージョンの Access の予約語の一覧
https://docs.microsoft.com/ja-jp/office/troubleshoot/access/reserved-words
はやはりaccdb形式でもエラーが起きることが確認できました。
しかしメッセージが斜め上
しかし、そこで発生したのが、
複数回フィールドを定義できません
エラーでした、
発生した状況
Insert Into でCsvかテキスト形式のデータから予約語を含むフィールド名を持つテーブルにデータを追加するときに発生するようです。
ネットではエクスポートのときにも発生するとされています。
また、このときクエリがデザインビューで開こうとしてもエラーが発生し、開いて修正ができないときもあります。
しかも解説を検索しても、
複数のフィールドが同じ名前で定義されているテーブルを作成しようとしました。テーブルの各フィールドは固有の名前を持っている必要があります。
というものしか出てきません。
このエラーは原因が複数考えられ、しかもフィールド名の重複と大して関係がないということがわかります。
たまたま予約語が危ないことを意識していたので比較的早期にわかりましたが。
クエリが開けないエラー 演算子がありません
予約語が入っているとクエリを実行しようとしてもエラーが発生し、さらにデザインビューで開こうとしてもエラーになるときがあります
構文エラー : 演算子がありません。
http://dbhikaku.web.fc2.com/jet_error/jet_error_3191.html
これも予約語を使わないことで発生しなくなるようです。
Accessのクエリがエラーで開けなくなったら
https://blog.withonoware.co.jp/tech/2017/07/23/access%E3%81%AE%E3%82%AF%E3%82%A8%E3%83%AA%E3%81%8C%E3%82%A8%E3%83%A9%E3%83%BC%E3%81%A7%E9%96%8B%E3%81%91%E3%81%AA%E3%81%8F%E3%81%AA%E3%81%A3%E3%81%9F%E3%82%89/
またこうしたときのために、クエリを作るためのマクロを組んでおくと役立ちます。