• ベストアンサー

メモリ不足です。

VBAのADOで For i = 1 To rs.RecordCount の部分で 実行時エラー -2147024882(8007000e) メモリ不足です。 になります。 同じコードでも今までは問題なく動いてました。 この状態になったら、一度再起動するしかないのでしょうか? アクセス2010です。

質問者が選んだベストアンサー

  • ベストアンサー
  • ushi2015
  • ベストアンサー率51% (241/468)
回答No.1

こんにちは For i = 1 To rs.RecordCount の前で、 MsgBox rs.RecordCount のようにして、意図した件数になるか確認しましたか?

FWUOAAYRGXUWT
質問者

お礼

回答頂きありがとうございました。

関連するQ&A

  • E_FAIL状態とはどういう状態でしょうか?

    アクセスADOなのですが Set cn = CurrentProject.Connection rs.CursorLocation = adUseClient rs.Open "T_テーブル", cn, adOpenKeyset, adLockOptimistic For i = 1 To rs.RecordCount を実行しようとすると 実行時エラー -2147467259(80004005) 「データプロバイダまたはほかのサービスがE_FAIL状態を返しました」 と言うエラーが発生します。 https://support.microsoft.com/ja-jp/kb/168336 を読んでみたのですが、よく意味がわかりません。 それに、同じコードで今まで動いてたのですが T_テーブルにデータを追加したら、 上記のエラーが発生するようになりました。

  • 「実行時エラー 3035メモリ不足です」

    アクセスのテーブルを開いてレコードを並び替えようとすると 「メモリ不足です」と表示されます。 VBAで、 DoCmd.RunSQL SQL のコードでも同じように 「実行時エラー 3035メモリ不足です」と言うエラーが発生します。 VBAでエラーになった場合は、 一度エラーでとまりますが、そのままF5を押すと問題なく実行できます。 メモリは4G積んでいます。win7です。 そんなにメモリが低いでしょうか? アクセスのレコード数は40000くらいです。

  • 【Excel】【VBA】実行時エラー メモリ不足

    【Excel】【VBA】実行時エラー -'-2147467259「メモリ不足です」 win8.1 エクセル2010 メモリ8Gのスペックで VBAコードを実行しているのですが たまに 実行時エラー -'-2147467259「メモリ不足です」 となり、マクロが中断されてしまいます。 今回、実行時エラー -'-2147467259「メモリ不足です」と出たコードは rs.Open strSQL, cn, adOpenKeyset, adLockOptimistic です。 前後のコードは省略していますが 普段は問題なく通ります。 strSQLも、中身をクエリのSQLビューに張り付けて、クエリで見てみたけど 問題なく表示されます。 なぜメモリ不足ですとなるのでしょうか? スペックが低いのですか?

  • ado loop

    アクセスのADOでレコードをループする時に For i = 1 To rs.RecordCount ごにょごにょ Next じゃない方法でループする方法があったと思いますが どういうのでしたっけ?  BOFとか使うものです。

  • adoのループについて カレントレコードについて

    adoのFor i = 1 To rs.RecordCountについて質問があります。 Sub test() Dim i As Long Dim MyFileName As String Dim cn As New ADODB.Connection Dim rs As New ADODB.Recordset MyFileName = CurrentProject.FullName cn.Open "Provider = Microsoft.ACE.OLEDB.12.0;" & "Data Source= " & MyFileName rs.Open "Tテーブル", cn, adOpenKeyset, adLockOptimistic For i = 1 To rs.RecordCount Debug.Print rs.Fields(0).Value rs.MoveNext Next rs.Close: Set rs = Nothing cn.Close: Set cn = Nothing End Sub これを実行した時に、テーブルには、1,2,3・・・という値が入っていて、 イミディエイドウインドウにも1,2,3・・・と順番に取得されるのですが、 For i = 1 To rs.RecordCountを実行した時は、強制的にrs.MoveFirstされるのでしょうか? For i = 1 To rs.RecordCount rs.MoveFirst Debug.Print rs.Fields(0).Value rs.MoveNext Next これと同じ意味なのでしょうか? RecordCount プロパティ (ADO) のヘルプを見ましたが、この件に関する記述は探せませんでした。 ご回答よろしくお願いします。

  • 実行時エラー3021「BOFとEOFのいずれかTR

    Sub test() Set cn = CurrentProject.Connection rs.Open "T分類", cn, adOpenStatic, adLockPessimistic rs.Filter = "中分類 = '不明' And (大分類 <> '不明')" For i = 1 To rs.RecordCount str大分類 = rs("大分類") rs("中分類") = str大分類 & "(不明)" rs.Update rs.MoveNext Next rs.Close: Set rs = Nothing cn.Close: Set cn = Nothing End Sub アクセスADOで上記のようなコードなのですが よく意味の分からないエラーが発生します。 コードの内容は 大分類が不明ではなく中分類が不明なら 中分類のレコードに大分類の値+不明にする です。 例えば該当のレコードが8レコードあれば i=5の時に、 実行時エラー3021「BOFとEOFのいずれかTRUE になっているか、 または現在のレコードが削除されています。 要求された操作には、 現在のレコードが必要です。」 が発生します。 規則としては rs.RecordCountの半分の値までは大丈夫ですが rs.RecordCountの半分+1の時に 上記のエラーが発生します。 ADOでデータの追加をする時にAddNewメソッドを入れ忘れた場合も 上記と同じエラーが発生しますが 今回のコードはフィルターをかけ 更新したいレコードを掴んでいるので AddNewメソッドは不要だと思っています。

  • アクセス ADO Null以外のレコードの件数を取得したい

    アクセス ADO Null以外のレコードの件数を取得したい テーブルにレコードが100行あり、そのうちNull値は40行あります。(主キーではないです) この時、ADOでNull以外にフィルタをかけたいのですが For i = 1 To RS.RecordCount RS.Filter = "フィールド = '*'" でも RS.Filter = "フィールド = 'Null''" でも、文字列になってしまい、うまくいきません。 RS.Filter = "フィールド " <> 'Null' だとエラーになります。 「<>null」を抽出する方法をご教授願います。

  • メモリ不足

    メモ帳を保存しようとしたら、 「メモリ不足の為この操作を実行できません。 Windowsアプリケーションをいくつか終了して空きメモリ領域を増やしてから、 再実行してください。」 と出ました。 PCのスペックはwin8でメモリ8Gです。 Outlook・エクセル・アクセス・IEぐらいしか立ち上げておらず 大したものは立ち上げてないのですが このエラーが出るほどメモリを使っているのでしょうか? タスクマネージャーのメモリを見ても 3.0/7.9GB(38%)です。

  • Accessエラー 「メモリ不足のため、・・・」

    Accessエラー 「メモリ不足のため、・・・」 Access2003を使用しています。 レポート作成中に上書き保存や、プレビューで見ようとすると、再起動するになります。 再度、そのレポートをデザインで見ようとしても、以下のエラーが出て、開けることが出来なくなり、 初めから作り直しになります。 「メモリ不足のため、この操作を完了できません。不要なアプリケーションを 終了し、再度実行して下さい。」 WindowsVista を使用しています。 なぜでしょうか? よろしくお願い致します。 最適化したり、新しいmdbにインポートしてしてみましたが、同じです。

  • JVMで異常終了。メモリ不足の可能性はないでしょうか?

    JVMで異常終了。メモリ不足の可能性はないでしょうか? ネットワーク越しにファイルアクセスを行っている最中に、時々、JVMでネイティブコードレベルのエラーが発生します。エラー後、同じ処理を再実行すると、正常に処理が行えています。ネットワークに負荷がかかっているときに発生しているようにも感じるのですが、JVMのメモリが不足しているということは考えられないでしょうか。ただし、エラー時のトレースには、メモリ不足に関するメッセージは出力されていません。可能性として、このようなことは考えられないかどうか、ご教授いただけると助かります。宜しくお願いします。

専門家に質問してみよう