IT仕事 MS Access

パラメータクエリにパラメータをセットして実行した結果をデータシートで表示する」というコードの実行で3065エラー

投稿日:

Accessの仕様として、パラメータクエリだけが駄目なのかと思ったら、なんと選択クエリが駄目なのだそう。

理由は、Executeメソッドはアクションクエリのもので、選択クエリのものではないからだそう。

けれどもネット上のあちこちに、「ばっちりこれで動作するよ」というサンプルコードの残骸が残っているところを見ると、以前のAccessのバージョンでは動いていた、ということなのかな?

これらとか?
http://tsware.jp/study/vol16/vbabegin_42.htm
http://stackoverflow.com/questions/30240329/ms-access-vba-open-select-query-with-parameters-run-time-3065-cannot-execute-a
http://www.pcreview.co.uk/threads/3065-cannot-execute-select-query-why-not.1638292/
http://answers.microsoft.com/en-us/office/forum/office_2010-access/error-3065-cannot-execute-select-query-but-its-not/e4284949-09ae-4a82-9c83-84f721be704f

ともかく、VBAで、結果をデータシートビューで欲しい選択クエリ(更新クエリや削除クエリなどの「アクションクエリ」はOK)では、Docmd.runsql や dbs.Execute のような書き方では、どうあってもエラーになるのであった。
一方で、ややこしいのは、「選択クエリをデータシートビュー」は駄目で、「選択クエリをレコードセット」にしてあれこれ操作するのはOK。

で、結論ですが、「選択クエリをデータシートビュー」で表示したい場合ですが、見方を変えて「フォームをデータビューに」仲介して、こうやったらうまくいきます。

「フォームのデータソースに、選択クエリをセットして、データシートビューで開く」

ずばり、コレデス。
実際、「DoCmd.OpenForm “入金催促”, acPreview」 みたいな書き方です。

パラメータクエリ(qdf.Parameters = “aaa”)も、レコードセットのフィルタ(rst.filter = “eメール = ‘test@test20160113.com'”)も、うまくいきます。

こりゃ便利だ!

-IT仕事, MS Access

執筆者:

関連記事

no image

AccessのデータをGoogleスプレッドシートに表示する

会社のネットショップで、お客様から電話で荷物の出荷状況について問い合わせがあった場合に、現状ではすぐに対応できていなかった。 荷物の伝票番号は、クロネコヤマトのB2のソフトか、あるいはAccessの業 …

no image

Q.NASに対してPCからアクセスしようとすると、毎回ユーザーIDとパスワードの入力を求められる

A. 1.ユーザーIDとパスワードを入力するとともに、その下の「保存」にチェックする 2.「コントロールパネル」の「ユーザーアカウント」にある「ネットワークパスワードの管理」から、ユーザー名とパスワー …

no image

読めなくなったHDD

知人から、Windowsで使っていてある日から読めなくなった外付けHDDからのデータ取出しを頼まれる。 以下、やってみたことと結果。 HDDケースとHDDのどちらがトラぶっているのかを調べるため、自分 …

PADでファイルがUTF8保存されない

ざっと探したところWebに自分が遭遇したトラブルの報告が見つけられなかったので、誰かの参考になるかもとメモ。 読み込み時はShiftJISのテキストを、図のようにフローで、エンコードを確かにUTF8保 …

no image

お客さんのWebショップ

管理しているお客さんのショップWebサイト。 ハッキリいって、儲かっていない。 5月末に立ち上げて未だ購買数ゼロ。 まあ、商品点数が十点少々しかないのが一番の原因なのだが。 昨日はそれで色々調査。 そ …