- 締切済み
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 クエリーにはデータは存在します。
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- khazad-lefty
- ベストアンサー率44% (296/668)
adOpenForwardOnlyをadOpenStaticとかに変えてみたらどうでしょうか?
- korin_
- ベストアンサー率69% (46/66)
> rs.Open "Q_発生原価合計" ではなく、下記のようなSQL文を発行してもダメですか? rs.Open "select * from Q_発生原価合計"
補足
ご迷惑おかけしてます。 >ではなく、下記のようなSQL文を発行してもダメですか? >rs.Open "select * from Q_発生原価合計" で試しましたが同じくeofで終了します。open直後に今はeofとbofの状態をmsgboxで表示してますがともにtrueで状態としては変わりません。loopの下にレコードカウント表示でも-1になってます。これをクエリーでなくテーブルでおこなうとうまくいくのでクエリーが原因でしょうか・・・・
- korin_
- ベストアンサー率69% (46/66)
こんにちは。 > EOFとBOFがともにTUREでうまく動作しません EOFとBOFがともにTrueということはカレントレコードがないという事なので、データが存在していません。 参照しているクエリとデータを今一度確認してみてください。 こちらで試しに1件データを作成して実行したところ、おっしゃるようなエラーにはなっていません。(正常に実行されました) また、ADOでの接続の場合最初の rs.MoveFirst は不要だと思います。 削除して試してみてください。
補足
こんにちは >また、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 アクセスでクエリを開くと上記のデータが表示されます。
- temtecomai2
- ベストアンサー率61% (656/1071)
そもそも adOpenForwardOnly で開いているレコードセットで MoveFirst っておかしくないですか? エラーになりませんか?
お礼
ありがとうございます。 そうですね、単純な間違いでした。上記部分ではエラーにはなりませんでした。
お礼
ありがとうございます。 色々とオプションに関しても変えて試行しましたがダメでした。 クエリーをマスタに変更すると大丈夫だったのでクエリをマスタ作成クエリーに変更してみましたら、うまくいったのでそのまま続けてます。 根本的には解決してませんがよしとしました。時間があれば再度、時間をかけてやろうと思ってます。 何度もありがとうございました。