SqlServerにAccessを端末として接続して、データを引っ張ってくるときにパススルークエリを使うと必要なデータだけサーバー側で準備してくれるのでネットワークが多少節約される。その為に結構パススルークエリを使う場面が出てきたのですが、フォームのテキストボックスの値をパラメーターとしてデータを絞りたいと思い色々と
ココに注意
実験しましたが結論的にはできません
でした。
SELECT dbo.[order].arrange_date, dbo.product_master.location, dbo.stock.product_code, dbo.[order].product_name, dbo.[order].number, dbo.[order].payment_price, dbo.[order].payment_method, dbo.stock.stock, dbo.[order].id, dbo.[order].delivery_name, dbo.[order].delivery_address1, dbo.[order].delivery_address2, dbo.[order].delivery_address3, dbo.[order].delivery_phone, dbo.[order].delivery_shedule_start, dbo.[order].delivery_shedule_end, dbo.master_client.shop_name, dbo.master_client.client_name, dbo.master_client.postal_code, dbo.master_client.adress1, dbo.master_client.adress2, dbo.master_client.adress3, dbo.master_client.tel, dbo.master_client.fax, dbo.master_client.e_mail FROM dbo.[order] INNER JOIN dbo.stock ON dbo.[order].product_sku = dbo.stock.jan_sku_code INNER JOIN dbo.product_master ON dbo.stock.product_code = dbo.product_master.code INNER JOIN dbo.master_client ON dbo.[order].client_id = dbo.master_client.ID WHERE dbo.[order].arrange_date = Forms![order_progress]![arrange_id]
WHERE dbo.[order].arrange_date = Forms![order_progress]![arrange_id]
上のコードの部分でフォームのテキストボックスarrange_idから値を引っ張ってきて、パススルークエリにてデータを絞りたいのです。
今までの、この系のエラーは、ほとんどがカンマなどの使い方でミスっていましたので色んな方法を試してみました。
WHERE dbo.[order].arrange_date = '" & Forms![order_progress]![arrange_id] & "'
WHERE dbo.[order].arrange_date = ' Forms![order_progress]![arrange_id] '
WHERE dbo.[order].arrange_date = '[Forms]![order_progress]![arrange_id] &'
色んな書き方を実験してみましたが全くデータが絞れません。カンマをつけるとエラーにはならないのですがダメです。
しかし、下のように直接抽出させたい数値を入れればちゃんと抽出して出力してくれます。
WHERE dbo.[order].arrange_date = '12345678'
ネット検索して自分なりに出した答え
この問題に関して、数時間ネット検索をして時間を使いまいた。
注意ポイント
私と同じ質問を投げかけている人も見かけましたが、答えが出ていませんでした。
今のところ、
パススルークエリの中にフォームのテキストボックスを入れても値として見てくれない
という結論に至りました。
結論説明
パススルークエリとは、Access側からSQLを投げかけることはできても、そのクエリ(SQL)の中に、フォームのテキストボックスを指定してもパラメーターとして使えないという事だと思います。
もし、この記事をみて違うという方がいたら、ぜひ教えていただければと思います。