ACCESSのデータが0件の時に、VBからデータを作成するとインデックスが0から始まる件について
VS2005のVBとACCESSを使ってるときに、
データを初期化してVB経由でACCESSにデータを追加すると
2件登録した時点で、同時実行違反とやらでエラーがでます。
で、何でこんなことが起こるのかと見ていったのですが、
VB側からDataGridViewやBindingSourceを使って、
ACCESSにデータを追加し、DataGridViewで新規に追加したデータを見ると
インデックスが0になってます。
でも、登録されたデータをACCESSを使って見てみると
インデックスが1から始まっている。
なので、
2件目をVB側から登録しようとすると
2件目のインデックスは1になるので、
ACCESS側に登録されているデータとインデックスの重複が起こり
同時実行違反となるんじゃないかと思います。
やや、図示すると
インデックス インデックス
VB側 Access側
1件目 0 登録→ 1
2件目 1 登録→ 2
こんな感じ
というわけで、
VB側での2件目とACCESS側での1件目のデータの主キーがぶつかるわけです。
というわけで、
VB側で、最初にデータを入力するときに
インデックスを1から開始すればよいと言うことが分かりました。
で、どうするかというと。
DataSetデザイナーを開き、
問題のDataTableのインデックスのキーのプロパティで
「AutoIncrementSeed」ってのがあるので
それを0から1に設定すればOK。
VSでのデータアクセスってかなりお手軽なんだけど、
抽象化しすぎててよく分からなくなるなぁ。。。
こことか見ると、VS2005でのデータベースの仕組みが理解できるかも。
http://itpro.nikkeibp.co.jp/article/COLUMN/20070320/265659/