こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

access VBA

組み立てたSQL文を実行し、movelastするとエラーになります。
エラー番号:3071

SQLは、対象のテーブルよりキーを指定して抽出していますが、
そのテーブルにキーが2種類以上存在するとエラーになってしまいます。

なにが原因なのでしょうか。
STR_sql = ""
STR_sql = STR_sql & " SELECT Mid([CM_KEY],2,2) AS A " & vbCrLf
STR_sql = STR_sql & " , Mid(StrConv([NAIYO],8),31,3) AS B " & vbCrLf
STR_sql = STR_sql & " FROM C_table " & vbCrLf
STR_sql = STR_sql & "WHERE (((Left([CM_KEY],1))='K') " & vbCrLf
STR_sql = STR_sql & " AND ((Len(Trim([CM_KEY])))=3)) " & vbCrLf
STR_sql = STR_sql & " AND ((Mid(StrConv([NAIYO],8),45,8) <= " & STR_st_ymd & ")) " & vbCrLf
STR_sql = STR_sql & " AND ((Mid(StrConv([NAIYO],8),53,8) >= " & STR_ed_ymd & ")); " & vbCrLf
※テーブルのフィールドは全てテキスト型です。

投稿日時 - 2017-08-07 15:32:10

QNo.9360323

困ってます

質問者が選んだベストアンサー

 こういう時は、段階を追ってSQL文を完成させるべきです。「急がば回れ!」と言うことです。で、私は、添付図のように4つの段階を追ってSQL文を完成させています。

>そのテーブルにキーが2種類以上存在するとエラーになってしまいます。

 エラーにはなりませんでしたよ。

PS、ヌル対策はしておいたが吉!

X Len([xxx])=3)
O Len([xxx] & "")=3)

Microsoftは下のを例示しれいる筈です。

投稿日時 - 2017-08-07 18:07:54

お礼

ご回答ありがとうございました。
データの文字型が原因で、ダブルコーテーションをつけたら正常に動作しました。
SQLを分解して実行することで、原因を特定することができました。ありがとうございました。

投稿日時 - 2017-08-18 14:35:04

ANo.1

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)