プロが教える店舗&オフィスのセキュリティ対策術

クエリで抽出したレコードを利用したいのですがうまくいきません。

Dim ds As Database
Dim rs As Recordset
Set ds = CurrentDb
Set rs = ds.OpenRecordset("クエリ名")

デバッグすると 
Set rs = ds.OpenRecordset("クエリ名") で止まります。

「実行時エラー’3061’
パラメータが少なすぎます。1を指定してください」のメッセージです。
どのような意味でしょう。教えてください。

A 回答 (4件)

フォームのテキストボックスの値を利用する方法として、とりあえず私が思いつくのは、


(1)クエリーを一旦テーブルにして保存し(テーブル作成クエリーでも使うのが簡単かな?)、そのテーブルを元に Recordset を開く。
(2)Recordset の Filter プロパティを利用して、抽出条件を後から設定する。
の二通りぐらいです。(これがベストな方法かわかりませんので、自信なしのアドバイスです。)

以下に、(2)の方法の例を示します。

まず、クエリーのテキストボックスの値を参照する抽出条件を外しておいてください。

Dim db As Database, rs As Recordset, rsFiltered As Recordset
Set db = CurrentDb
Set rs = db.OpenRecordset("クエリー名")
rs.Filter = テキストボックスの値を使った抽出条件 '(クエリーの WHERE 以降の部分。データ型や「“」、「’」、リテラルの付加等に注意して記述してください。)
Set rsFiltered = rs.OpenRecordset

以上で、rsFilteredが、求める Recordset になります。

HELPで、DAOの Filter プロパティを確認してみてください。
うまくいかない場合は、補足で、Q_個人情報クエリーのSQLビューを示していただけると、もっと具体的なアドバイスができると思います。
(土日は追加回答ができませんことを、ご了承ください。)
    • good
    • 0
この回答へのお礼

親切丁寧なご回答をありがとうございます。
お礼が送れてすみません。

(1)(2)とも出来まして大変勉強になりました。

今後ともよろしく。

お礼日時:2002/04/17 06:37

gonta_gomaさんのアドバイスが、可能性大だと思いますが、



もし、Q_個人情報クエリーを開く際に、パラメータの入力を要求されない場合でも、抽出条件にフォームの例えばテキストボックスの値などを参照している場合も、同様のメッセージが出ます。

差し支えなければ、Q_個人情報クエリーのSQL文ビューを示していただけると、原因がわかるかもしれませんが?

この回答への補足

ご回答ありがとうございます。

まさしく、その通りです。
抽出条件にフォームのテキストボックスの値を参照しています。
と言う事は 抽出条件にフォームのテキストボックスの値を参照さすことは出来ないのですか?
あつかましい質問と思いますが、どうしてもフォームのテキストボックスで値を入力してクエリで抽出したレコードを利用したいのですが方法があれば教えてください。
よろしく。

補足日時:2002/04/11 17:33
    • good
    • 0

「パラメータが少なすぎます。

1を指定してください」」というのは要するにクエリーが間違っているという事です。
これは予想ですが、Q_個人情報を開こうとすると、ダイアログボックスが表示されて、何か入力してくれといわれるのじゃないでしょうか。
SLQを直接編集しなくても、クエリーを作った後でフィールド名を変更したりすればこの様な現象は起こります。
Q_個人情報 を正しくもう一度つくりなおしたらいかがでしょうか。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます
お礼遅れてすみません

お礼日時:2002/04/11 17:32

こんにちは。

maruru01です。

指定したクエリ名によって起こることがあるようです。
どのようなクエリ名でしょうか。
また、OpenRecordsetの第1引数にSQLステートメントを指定する場合に、文字数が制限(多分255文字)を越えると同じエラーが出るようです。
では。

この回答への補足

早速ご回答ありがとうございます。

クエリ名は Q_個人情報 です。

SLQステートメントはまだ勉強をしてないので使っていません。

補足日時:2002/04/10 13:07
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!