• 締切済み

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 クエリーにはデータは存在します。

みんなの回答

回答No.4

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

sereka95
質問者

お礼

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

  • korin_
  • ベストアンサー率69% (46/66)
回答No.3

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

sereka95
質問者

補足

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

  • korin_
  • ベストアンサー率69% (46/66)
回答No.2

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

sereka95
質問者

補足

こんにちは >また、ADOでの接続の場合最初の rs.MoveFirst は不要だと思います。 >削除して試してみてください。 MoveFirstは削除してみましたがEOFでDebug.Printが表示なしで終了しました。 クエリーには下記のデータがあります。 科目CD金額の合計 科目名  印刷順 決算年月 404000 7731302   派遣料  3 200804 405000 5540500   設備リース料 6 200804 407000 3762   設備補繕費  8 200804 410000 1289025   通信費  11 200804 420000 1038482   雑費  15 200804 930100 951010   材料費  7 200804 930200 4502002   外注費    2 200804 930400 17331294  加工費 1 200804 404000 7134474   派遣料 3 200805 405000 5540500   設備リース料 6 200805 410000 1289025   通信費 11 200805 420000 1590444   雑費 15 200805 930100 865700   材料費 7 200805 930200 3539897   外注費 2 200805 930400 13295418  加工費 1 200805 アクセスでクエリを開くと上記のデータが表示されます。

回答No.1

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

sereka95
質問者

お礼

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