プロが教えるわが家の防犯対策術!

Access97を使用しています。

SQLで組んだモジュール中に
"実行時エラー '3061'"
"パラメータが少なすぎます。1を指定して下さい。"
と表示されます。

デバッグをクリックすると下記2行目が黄色になります。

Set Database = CurrentDb
Set Table = Database.OpenRecordset("選択クエリー", dbOpenDynaset, dbReadOnly) ←

情報が少ないかもしれませんが、何故このようなメッセージが出るのでしょうか?

教えて!goo グレード

A 回答 (4件)

選択クエリーの中に、抽出条件がパラメータを指定するかたちで入力されていると、このようになることがあります。



つまり、クエリ内のあるフィールドの抽出条件が、

Between 100 And 200

という風に値をはっきりと指定したかたちではなくて、例えば…

Between [開始IDを入力してください] And [終了IDを入力してください]

Between [Forms!][フォーム名]![テキストボックス名] And [Forms!][フォーム名]![テキストボックス名]

みたいな感じで、ユーザーに値を入力させたり、フォームのテキストボックスの値を流用するみたいになってると、値がすぐに定まらないせいか(?)、OpenRecordsetを使うとご質問のようなエラーになります。(単純にクエリをダブルクリックで開くだけとか、Docmdでクエリを開く場合ならエラーになりません。OpenRecordsetを使ってクエリを開こうとするとエラーになります。)

回避する方法としては、●直接VBA内でSQLを書いて、パラメータ部分を変数などを使って直接値を指定してレコードセットを取り出す…などで行けると思うのですが、それ以外にも簡単な方法があるので、以下のURLを参照してみてください。

http://ws.31rsm.ne.jp/~pension/access/tips/benri …

もし意味が違ってたらごめんなさい。
    • good
    • 2

わたしは



Dim DBS As Database
Dim rr1 As Recordset
*
*
Set DBS = CurrentDb
Set rr1 = DBS.OpenRecordset("FILE11")
If rr1.EOF Then GoTo LAST1
rr1.MoveFirst
Do Until rr1.EOF
*
*
rr1.MoveNext
Loop

としています
ご参考まで
    • good
    • 1

クエリーが 正しく動かないのかもしれません。



http://ws.31rsm.ne.jp/~pension/access/ota2002/54 …
http://www.users.gr.jp/ml/archive/access/2417.asp
    • good
    • 0

「選択クエリー」のSQLに問題があります。


おそらくはSQLが不完全だと思われます。
VBAでなく単独で実行してみてください。
    • good
    • 1

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

このQ&Aを見た人はこんなQ&Aも見ています

教えて!goo グレード

このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング