- 締切済み
VBAのコード
参考書に従って次のようなコードを書きました。 Private Sub previewButton_Click() Dim db as DAO.Database Dim rs as DAO.Recordset Set db = CurrentDb Set rs = db.OpenRecordset("Q_ラベル印刷", dbOpenDynaset)* if me!......................以下略 *印のところで「パラメーターが少なすぎます。1を指定してください。」というメッセージが出ます。 どう直せばいいのでしょうか。 よろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- jacob-wk9
- ベストアンサー率36% (85/231)
No1です。お返事ありがとうございます。No2さんのを拝見して、「これだ!」と思ったのですが どちらもダメでしたか。オプションを変える手間をおかけし、すいません。 他の方法を試されるということで、すでに不要とは思いますが、 例えば"Q_ラベル印刷"のところを、"SELECT * FROM Q_ラベル印刷"としたらどういう結果が出るのか 興味のあるところです。
- masatsan
- ベストアンサー率15% (179/1159)
Q_ラベル印刷がパラメータクエリーなんじゃないですか? それだとパラメータをセットしないとそのようなエラーがでる。
お礼
ご回答ありがとうございました。パラメータークエリではないのですが、抽出条件が一つ設定してあります。これを削除するとエラーは止まりました。しかし、クエリは検索のためのものですし、普通は何らかの抽出条件が設定してあるでしょうから、それでエラーになるというのは納得いきませんね。
- jacob-wk9
- ベストアンサー率36% (85/231)
コードは合ってるのにへんですね。私も、時々この手のコードでソース元によっては VBA様がおむずかりになることがあるので、引数(dbopendynaset)のところを適当に 順番に試して、そのうち、とりあえず停止しないでコードを走らせることができる引数に ヒットします。(厳密には、それぞれに重要な概念があるのでしょうが、特に参照のみの時はあまり気にしていません。) これの引数をヘルプから調べると dbOpenDynamic 16 ダイナセット タイプの Recordset を開きます。 dbOpenDynaset 2 ダイナセット タイプの Recordset を開きます。 dbOpenForwardOnly 8 前方スクロール タイプの Recordset を開きます。 dbOpenSnapshot 4 スナップショット タイプの Recordset を開きます。 dbOpenTable 1 テーブル タイプの Recordset を開きます。 とありますので、片っ端から変えて行ってみてはいかがでしょうか。 たぶん、スナップショットあたりがOK出そうな気がします。
お礼
ご回答ありがとうございました。引数をすべて試してみましたが、どれも駄目でした。 結局DAOはあきらめて、filterを使ってレポートを開くことにしました。こちらが正解でした。
お礼
再度の回答ありがとうございました。 回答で触れられました方法はまた別の機会に試してみたいと思います。