|
▼ON さん:
こんにちは。
>・同時書き込みが生じた場合
>
> Rst.AddNew
>
> For C = 0 To 22
>
> Rst(C) = Cells(C_ROW, C + 1).Value
>
> Next
>
> Rst(23) = Now()
>
> Rst.Update
DAO で記述されている場合は
AddNew で排他処理が行われ、Updateで排他が解除されます。
ある端末において AddNew 〜 Update の間の処理を行っていると
他の端末ではエラーが出るかと思われます。
(ステップ実行(1行ずつの実行)を複数端末で行うと検証が可能です。)
処理的には一瞬で終わるものであるため、
大概エラーが出ずに処理が終わるかと思われますが
偶然に頼ることになるため、当然エラーが発生する場合もあります。
あまり運用を大きく変えないのであれば
Excelマクロ側にErrorトラップを仕掛けて
書き込めないようであれば数秒置いてから
処理を再実行するようにしたりする方法もあるかと思われます。
運用面を含め改善する事が可能であれば
当方でしたら
1)サーバ上に \\hoge\fuga\ExcelData のような共有フォルダを設置しておく
2)各端末から共有フォルダにExcelデータをアップロード
3)AccessVBAにて、共有フォルダ内のExcelデータの吸い上げ
のような手段を行うかと思われます。
neptune さんのご回答にあるように SQLServer を使用するのであれば
同時にデータの追加をしてもServer側で制御してくれるのですが、
Accessについてはそういった機能がついていないため
Access側から各Excelを総なめするようなコードの方が
無難なのではないかと思われます。
|
|