ACCESS VBA SQLステートメントが正しくありません、の対処法

SQLステートメントが正しくありません、の対処法

ACCESSを開発していると様々なエラーと出会うことがあります。
今回は、その中でもSQLステートメントが正しくありません、の対処法をご紹介します。


こんにちは。
はこにわガジェット (@hakoniwagadget) です。

ACCESSを使った売上管理、顧客管理などのデータベース開発を行っています。
ACCESSは基本機能だけでも十分便利ですが、VBAを使うことで格段に使いやすいデータベースを作成可能です。
この記事ではACCESSでのVBAの使い方をご紹介していきます。

SQLステートメントが正しくありません、のエラー

ACCESS VBA開発をしているとこのようなエラーを見ることがあります。

このエラーは、VBAでSQL分を利用したり、クエリを操作する際に発生します。
特に、VBAでADOを利用し、レコードセットをオープンしたときに発生することが多いようです。

エラーが示す意味はそのままですが、SQL文が正しくないのが原因です。

SQLステートメントが正しくありません、の対処法

このエラーを解決するには、SQL文を正しく直すことが有効です。
特定のクエリを操作しようとしたときに発生していると思いますので、クエリをSQLビューで開いておかしなところがないかを確認しましょう。

SQLビューはクエリを起動後に、表示メニューから選択可能です。

SQLビュー

もしくは、VBAでの参照設定が適切に行われていない可能性もあります。
参照設定で必要なライブラリが登録されているかも確認しておきましょう。

参照設定

SQLステートメントが正しくありません、の解決例

実際に私が遭遇したSQLステートメントが正しくありません、の解決例をご紹介します。
ACCESSでADOを使ってあるクエリをレコードセットとして開こうとした際にこのエラーが発生しました。

デバッグを行うと、レコードセットをオープンする処理でエラーが出ていることがわかりました。

しかし、開こうとしているクエリを見ても特におかしなところはなく、かなり解決に苦慮しました。

結果的には、対象のクエリのもととなっているテーブルに「添付ファイル型」のフィールドがあったことが原因でした。
このクエリには添付ファイル型のフィールドは使っていなかったのですが、元のテーブルに添付ファイル型があるだけでエラーとなってしまうようなのです。

そのため、本処理を実行する際に元のテーブルから新しく作った一時テーブルに添付ファイル型以外のフィールドの値をすべてコピーし、新しい一時テーブルをもとにクエリを作成して処理をするということで解決できました。

このように、SQLステートメントが正しくありませんのエラーが出る場合は、通常のSQLではないACCESS特有の機能を利用していないかを疑うと原因を発見できると思います。

以上、SQLステートメントが正しくありません、の対処法をご紹介しました。


ACCESSを使いこなせば、業務の効率化や自動化が実現できます。
しかし、自分でACCESSを学ぶには時間がない、難しそうで不安、という方も多いでしょう。

そんな時は、ACCESS開発歴20年以上、過去に100以上のACCESSデータベースを開発してきた私(@hakoniwagadget)にお任せください。

ACCESSの新規開発、既存のACCESSの修正、ACCESSの操作レッスンなど様々なサービスをご提供しています。
ご興味のある方は下記のサービス一覧をご覧ください。

サービス一覧

最後までお読みいただき、ありがとうございました。