MS Access

「3070 有効なフィールド名または式として認識できません」エラーで、困った

投稿日:2012年1月23日 更新日:

Accessで、クエリ単体での実行だとうまくいくのに、いざ、そのクエリをVBAコード内で実行すると、上記エラーが出る。

難問だった。
SQL文内でDISTINCTを使っているからかなーとか、LEFT JOINが悪いのかなーとか、3時間ほど悩んだ。
が、何とか解決。

問題は、SQL文の「*」にあった。

正: strSQL = “SELECT DISTINCT 企業.* FROM 企業 LEFT JOIN 履歴 ON 企業.ID = 履歴.企業ID” & _
誤: strSQL = “SELECT DISTINCT * FROM 企業 LEFT JOIN 履歴 ON 企業.ID = 履歴.企業ID” & _

二つのテーブルを使っている場合には、どのテーブルのフィールドを出力するか、きちんと明示しないとダメなんだね。
自分の場合、SQLを作る際に、Accessでまずは作るのだが、自動だと冗長に作られるので、「企業.」をエディタで全削除していた。
そのせいだった。

何とか今回もクリア。
しかしAccessに乗った旅はまだまだ続きそうであった。

-MS Access

執筆者:

関連記事

no image

AccessからVBAでブラウザの入力フォームに値をセットする

ExcelWebAddin でWebフォームを自動入力 – Home and Abroad CliborのマクロをPythonの正規表現を使ってフォームに値をセットする – Home and Abro …

no image

Accessでファイル選択ダイアログを開いて選択したExcelファイルの先頭シートを読み込み番号が一致するデータの配送日を本日日付で消し込む処理

ファイル選択ダイアログを開いて、選択したExcelファイルの先頭シートを読み込み、番号が一致するデータの配送日を本日日付で消し込む処理(楽天販売DB.mdb) ダイアログを表示する際には、事前にMic …

no image

Accessでレポートのレコードソースを動的にセットしたい

今までは、フォーム上のボタンをクリックしたら、レポートをデザインで開いてからレコードソースをセットしなければならないと思っていた。 つまり、こんなやり方をやっていた。 フォーム:  【ボタン1をクリッ …

no image

Accessで1件ずつレコードを読んでスナップショットファイルを作ってメール送信する処理

作るのにWebに情報が無くてすごく苦労したので備忘録。 私にしかわからないかもしれないけど、見た人も何か参考になるかもしれないから、公開しよっと。 ■事前準備 1.処理を起動するフォームにボタン「調査 …

no image

Accessでレコードコピー(オートナンバー除く)の決定版のコード!

Accessで、レコードのオートナンバーを除くフィールドを1行、複製(コピー)したくって、Google検索したのだけどなかなか出てこず、しかしやっと見つけた、黄金のソース・・・・。 [VBA] ADO …