こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

ACCESSADOについて

ACCESSでADO接続でEOFとBOFがともにTUREでうまく動作しません
どなたか回避する方法を教えてください。

Dim cn As ADODB.Connection
Dim rs As ADODB.Recordset

Set cn = CurrentProject.Connection

Set rs = New ADODB.Recordset
rs.Open "Q_発生原価合計", cn, adOpenForwardOnly, adLockReadOnly

rs.MoveFirst

Do Until rs.EOF
Debug.Print rs!決算年月, rs!金額の合計, rs!科目CD
rs.MoveNext
Loop

'終了
rs.Close: Set rs = Nothing
cn.Close: Set cn = Nothing

クエリーにはデータは存在します。

投稿日時 - 2008-11-20 19:49:14

QNo.4494428

すぐに回答ほしいです

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(4)

ANo.4

adOpenForwardOnlyをadOpenStaticとかに変えてみたらどうでしょうか?

投稿日時 - 2008-12-03 09:10:46

お礼

ありがとうございます。
色々とオプションに関しても変えて試行しましたがダメでした。
クエリーをマスタに変更すると大丈夫だったのでクエリをマスタ作成クエリーに変更してみましたら、うまくいったのでそのまま続けてます。
根本的には解決してませんがよしとしました。時間があれば再度、時間をかけてやろうと思ってます。

何度もありがとうございました。

投稿日時 - 2008-12-09 22:45:09

ANo.3

> rs.Open "Q_発生原価合計"
ではなく、下記のようなSQL文を発行してもダメですか?
rs.Open "select * from Q_発生原価合計"

投稿日時 - 2008-11-28 00:41:11

補足

ご迷惑おかけしてます。
>ではなく、下記のようなSQL文を発行してもダメですか?
>rs.Open "select * from Q_発生原価合計"
で試しましたが同じくeofで終了します。open直後に今はeofとbofの状態をmsgboxで表示してますがともにtrueで状態としては変わりません。loopの下にレコードカウント表示でも-1になってます。これをクエリーでなくテーブルでおこなうとうまくいくのでクエリーが原因でしょうか・・・・

投稿日時 - 2008-11-28 09:51:56

ANo.2

こんにちは。

> EOFとBOFがともにTUREでうまく動作しません
EOFとBOFがともにTrueということはカレントレコードがないという事なので、データが存在していません。
参照しているクエリとデータを今一度確認してみてください。
こちらで試しに1件データを作成して実行したところ、おっしゃるようなエラーにはなっていません。(正常に実行されました)

また、ADOでの接続の場合最初の rs.MoveFirst は不要だと思います。
削除して試してみてください。

投稿日時 - 2008-11-25 15:38:57

補足

こんにちは
>また、ADOでの接続の場合最初の rs.MoveFirst は不要だと思います。
>削除して試してみてください。
MoveFirstは削除してみましたがEOFでDebug.Printが表示なしで終了しました。
クエリーには下記のデータがあります。
科目CD金額の合計科目名 印刷順決算年月
4040007731302  派遣料 3200804
4050005540500  設備リース料 6200804
4070003762  設備補繕費 8200804
4100001289025  通信費 11200804
4200001038482  雑費 15200804
930100951010  材料費 7200804
9302004502002  外注費    2200804
93040017331294  加工費 1200804
4040007134474  派遣料 3200805
4050005540500  設備リース料 6200805
4100001289025  通信費 11200805
4200001590444  雑費 15200805
930100865700  材料費 7200805
9302003539897  外注費 2200805
93040013295418  加工費 1200805
アクセスでクエリを開くと上記のデータが表示されます。

投稿日時 - 2008-11-25 20:44:54

ANo.1

そもそも adOpenForwardOnly で開いているレコードセットで MoveFirst っておかしくないですか?
エラーになりませんか?

投稿日時 - 2008-11-23 02:11:33

お礼

ありがとうございます。

そうですね、単純な間違いでした。上記部分ではエラーにはなりませんでした。

投稿日時 - 2008-11-25 20:54:33

あなたにオススメの質問