• ベストアンサー

アクションクエリでレコード数を制限して実行したい

Access2002でADOです。 数万レコードになるデータを更新しようとすると途中でエラーになるようです。 以前、そういう場合はレコード数を制限して、100レコードずつとか200レコードずつとかそういう単位で処理していく方法が書かれていたような気がします。 そのときは気にもとめていなかったのですが、今になって必要になってきました。 この処理は具体的にどのように実行すればいいのでしょうか?

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

  • ベストアンサー
  • gadd3
  • ベストアンサー率46% (211/451)
回答No.1

> 数万レコードになるデータを更新しようとすると途中でエラーになるようです。 定石としましては、レジストリの HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\4.0\Engines\Jet 4.0 の MaxLocksPerFile の値を、10進数の9500から 同じく10進数の50000くらいとか、必要な件数分の 値にすると、イッパツで処理できるようになります。 ただ、私は上限がどのくらいなのかわからないので MDBのバックアップをとってから色々とお試しください。 私はいつも50000くらいに設定します。 そのくらいの件数を処理する事もありますが、 とりあえず不具合は出ないです。 (たまたまかもしれませんが) >そういう場合はレコード数を制限して、 >100レコードずつとか200レコードずつ >とかそういう単位で処理していく方法 マルチユーザー使用でなければ、また、排他アクセスできる状態なら (つまり、処理時に誰もアクセスしてなければ) 数万件を一度に処理しても問題ないとは思います。 なお、クエリ(SQL文)で処理する場合は、この制限は 関係ないです。

その他の回答 (1)

  • gadd3
  • ベストアンサー率46% (211/451)
回答No.2

失礼しました。 クエリでも制限がかかるのでしょうか? いつもレジストリを書き換えてしまうのでエラーが 出ないものですから、混同したかもしれません。 もしそうでしたらごめんなさい。

noname#27115
質問者

お礼

ありがとうございます。 レジストリの書き換えの方法はWEBにあったのですが、本旨はレコード数を区切って処理をしたい・・・というものでした。 すみません。こちらで教えていただけるとありがたいです。