プロが教えるわが家の防犯対策術!

Access2002でADOです。

数万レコードになるデータを更新しようとすると途中でエラーになるようです。

以前、そういう場合はレコード数を制限して、100レコードずつとか200レコードずつとかそういう単位で処理していく方法が書かれていたような気がします。

そのときは気にもとめていなかったのですが、今になって必要になってきました。

この処理は具体的にどのように実行すればいいのでしょうか?

A 回答 (2件)

> 数万レコードになるデータを更新しようとすると途中でエラーになるようです。



定石としましては、レジストリの

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\4.0\Engines\Jet 4.0



MaxLocksPerFile

の値を、10進数の9500から
同じく10進数の50000くらいとか、必要な件数分の
値にすると、イッパツで処理できるようになります。

ただ、私は上限がどのくらいなのかわからないので
MDBのバックアップをとってから色々とお試しください。

私はいつも50000くらいに設定します。
そのくらいの件数を処理する事もありますが、
とりあえず不具合は出ないです。
(たまたまかもしれませんが)


>そういう場合はレコード数を制限して、
>100レコードずつとか200レコードずつ
>とかそういう単位で処理していく方法

マルチユーザー使用でなければ、また、排他アクセスできる状態なら
(つまり、処理時に誰もアクセスしてなければ)
数万件を一度に処理しても問題ないとは思います。


なお、クエリ(SQL文)で処理する場合は、この制限は
関係ないです。
    • good
    • 0

失礼しました。



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

ありがとうございます。

レジストリの書き換えの方法はWEBにあったのですが、本旨はレコード数を区切って処理をしたい・・・というものでした。

すみません。こちらで教えていただけるとありがたいです。

お礼日時:2006/07/30 13:40

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す