• 締切済み

アクセスのVBで作成した選択クエリが開けない

アクセスのVBで選択クエリを作成し、それを開こうとすると、開けません。 作成された選択クエリをデザインビューで見てみると、変数janがそのまま入力されて しまっていて、クォーテーションマークで囲われていないのが原因のようなのですが・・・。 どうしたら良いか教えてください。。 コードは以下のとおりです。 Set DB = CurrentDb Set qdf = DB.QueryDefs("商品データ抽出") StrSQL = qdf.SQL StrSQL = "SELECT ASPOWNER_PRODUCT_MASTER.PRODUCT_ID, ASPOWNER_PRODUCT_JAN_CODE_V.JAN_CODE, ASPOWNER_PRODUCT_MASTER.DISPLAY_NAME FROM ASPOWNER_PRODUCT_MASTER AS ASPOWNER_PRODUCT_MASTER_1 INNER JOIN (ASPOWNER_PRODUCT_MASTER INNER JOIN (ASPOWNER_PRODUCT_JAN_CODE_V INNER JOIN ASPOWNER_PRODUCT_JAN_CODE_MAP ON ASPOWNER_PRODUCT_JAN_CODE_V.JAN_CODE_ID = ASPOWNER_PRODUCT_JAN_CODE_MAP.JAN_CODE_ID) ON ASPOWNER_PRODUCT_MASTER.PRODUCT_ID = ASPOWNER_PRODUCT_JAN_CODE_V.PRODUCT_ID) ON ASPOWNER_PRODUCT_MASTER_1.PRODUCT_ID = ASPOWNER_PRODUCT_MASTER.PRODUCT_ID" StrSQL = StrSQL & " WHERE (((ASPOWNER_PRODUCT_JAN_CODE_V.JAN_CODE)=" StrSQL = StrSQL & jan StrSQL = StrSQL & "));" qdf.SQL = StrSQL DoCmd.OpenQuery "商品データ抽出", acViewNormal, acEdit

みんなの回答

  • nao-y
  • ベストアンサー率58% (111/190)
回答No.1

janというのは変数で、このコードの中で値を設定しているんですよね? > 作成された選択クエリをデザインビューで見てみると、変数janがそのまま入力されて > しまっていて、クォーテーションマークで囲われていないのが原因のようなのですが・・・。 これは、例えば、janの値が「abcde」と設定されているときに SQLのWHERE句以降が > WHERE (((ASPOWNER_PRODUCT_JAN_CODE_V.JAN_CODE)='abcde' となって欲しいのに、 > WHERE (((ASPOWNER_PRODUCT_JAN_CODE_V.JAN_CODE)=abcde となってしまってエラーになるということでしょうか? でしたら StrSQL = StrSQL & "'" & jan & "'" と記述すればよいのかと思いますが、、、違いますか? #ちなみに、細かいことを言うと「アクセスのVB」ではなくて「アクセスVBA」ですね。 #「VB」と「VBA」では、似ているようで違いますから。。。

関連するQ&A

専門家に質問してみよう