
Access97を使用しています。
データは テーブルAの項目B、項目Cが下記のようにあるとします。
フォーム上のText"B"に項目Bを入力します。
項目B項目C
11a
11b
22aa
22bb
22cc
33aaa
33ccc
この時
Set DB = CurrentDb()
strSQL = "SELECT * FROM A WHERE "
strSQL = strSQL + "B='" & Me.B & "';"
Set RS = DB.OpenRecordset(strSQL, dbOpenDynaset, dbReadOnly)
RS.MoveFirst
RS.MoveLast
m = RS.RecordCount
For i = 1 To m
COIL_N = RS.Fields("C")
Call RS.MoveNext
Next i
上記のようなモジュールですが、例えば
項目Bの"11"を選んだ時、項目Cの二番目のデータbが 取得できません。
"カレントレコードがありません"とでてきます。何故でしょうか?
No.2
- 回答日時:
こんにちは。
maruru01です。No.1の人の言う通り、1行実行しながら変数などに格納される値をモニタしてみることです。
"カレントレコードがありません。"
というエラーの場合は、レコードセットのEOFかBOFプロパティがTrueになっていることが原因ではないでしょうか。
それから、気になった点は何故
RS.MoveFirst
RS.MoveLast
としているのかという点です。
あと、レコードセットの読み込みはForループより、DoループでEOFプロパティに格納される値を条件にした方がいいと思います。
Do Until (RS.EOF)
COIL_N = RS.Fields("C")
RS.MoveNext
Loop
という感じです。
MoveFirstとMoveLastをなしにして、上記のコードにすればOKだと思います。
No.1
- 回答日時:
ブレイクポイントを設定して1行ずつ実行すれば、原因がわかりそうな
質問ですね。
とりあえず、mにしかるべき数字(この場合は2)がちゃんと入ってる
か確認してみては?
あと最後から2番目のCALL文て必要なんですか? なくてもいいような・・。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
Access カレントレコードがありません
その他(データベース)
-
Access レコード削除時に「カレントレコードがありません」エラーが表示されてしまう
Access(アクセス)
-
ADO VBA 実行時エラー3021
Visual Basic(VBA)
-
-
4
アクセス2007でのインポートエラー「カレントレコードがありません」に
Access(アクセス)
-
5
Access サブフォームでの選択行の取得
その他(データベース)
-
6
SQL文で パラメータが少なすぎます エラー
Access(アクセス)
-
7
アクセス フォームをリクエリしたい
Access(アクセス)
-
8
パラメータが少なすぎます。1を指定して下さい。""
Excel(エクセル)
-
9
AccessのFormの設定で、開いた時に必ず最大化で表示する方法が分からず困っています
Access(アクセス)
-
10
Access 2010で実行時エラー3061
その他(Microsoft Office)
-
11
ラベルとテキストボックスのグループ化を解除したい
Access(アクセス)
-
12
Access Error3061 パラメータが少なすぎます。4を指定してください。
Access(アクセス)
-
13
AccessのフォームのテキストボックスにLOOKUPで表示したい
Access(アクセス)
-
14
ACCESS アクセスで他のデータベースからのデータインポート
Access(アクセス)
-
15
Accessのフォーム上にレコード数とレコード番号の表示
その他(データベース)
-
16
Access VBAで int型にnullを入れる方法について
Windows Vista・XP
-
17
ACCESSでフィールド名の変更(VBA)
Access(アクセス)
-
18
ACCESSでデータ読み取り専用を解除する方法
その他(データベース)
-
19
アクセスで#エラーを表示させない方法は?
Access(アクセス)
-
20
Accessで別mdbのテーブルをコピー
その他(プログラミング・Web制作)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
キーが同じを複数行を1行にま...
-
GROUP BYを行った後に結合した...
-
OracleのSQL*PLUSで、デー...
-
実績累計の求め方と意味を教え...
-
Oracleでの文字列連結サイズの上限
-
ワードの差込印刷で教えて下さ...
-
レコードが存在しなかった場合
-
ファイル書込みで一行もしくは...
-
MERGE文を単体テーブルに対して...
-
select insertで複数テーブルか...
-
ADO VBA 実行時エラー3021
-
Access終了時の最適化が失敗?
-
カレントレコードが無い事を判...
-
サブフォームに新規レコードを...
-
SQL GROUPで件数の一番多いレコ...
-
差し込み印刷のレコード数について
-
沿線コード
-
SQL文で右から1文字だけ削除す...
-
固有レコード識別子の選択とは
-
チェックボックスの項目をDBにi...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
キーが同じを複数行を1行にま...
-
改行コード
-
"カレントレコードがありません...
-
DynamicSQL
-
Access2007 Mid関数
-
accessからexcelへのエクスポー...
-
GROUP BYを行った後に結合した...
-
Oracleでの文字列連結サイズの上限
-
OracleのSQL*PLUSで、デー...
-
Accessで別テーブルの値をフォ...
-
決定性有限オートマトン
-
select insertで複数テーブルか...
-
DataGridViewの、選択されてい...
-
ファイル書込みで一行もしくは...
-
レコードが存在しなかった場合
-
ADO VBA 実行時エラー3021
-
最新の日付とその金額をクエリ...
-
実績累計の求め方と意味を教え...
-
Date型にNULLをセットしたい V...
-
SELECTで1件のみ取得するには?
おすすめ情報