OIP-04109

Oracle Objects for OLE(OO4O)で発生するエラー。
Dynasetを作成するときにNOCASHオプションを付けていなかった場合に発生することがある。



NOCASHオプションを付けていない場合、Tempフォルダにoipsr***(***は連番)のファイルを作成するが
プログラムを同時に動かした場合等にこのファイルを同時に作成しようとしてエラーが発生する。



プログラムでの回避策としては以下の2通り


1.NOCASHオプションを使用する

Private Const ORADYN_NOCACHE = &H8&


Set objSelDynaset = ObjOraDatabase.DbCreateDynaset(strSql, ORADYN_READONLY Or ORADYN_NOCACHE)

※ORADYN_NOCACHEを使うとデータを一度しか読めなくなるため、MoveFirstなどが使えなくなるので注意



2.OIP-04109のエラーの場合は再試行するよう実装する




また、動作環境が原因で発生することもある。


・oipsrXXXを出力するTempフォルダへのアクセス権限がない


・oo4oのバージョンが2.0以下の場合はoipsrXXXの上限が999なのでそれを超えた場合も発生する



このエラーを再現させたい場合はクライアントの環境変数「Temp」で指定されている
フォルダの書き込み権限を外すことによって発生させることができる。
※環境によっては環境変数「Temp」でないこともある