ACCESS VBAでレコードセットにSQLを入れる時のメモ1
この環境下では初でした。
SELECT T1.P_CD, I1.O_P_CD, I1.S_ID
FROM T1
INNER JOIN I1
ON (T1.P_CD = I1.O_P_CD);
みたいな簡単なSQLがクエリなら通るのにVBA上だと通らない。
iRS.Open "SELECT T1.P_CD, I1.O_P_CD, I1.S_ID FROM T1 INNER JOIN I1 ON (T1.P_CD = I1.O_P_CD);", db, adOpenStatic, adLockOptimistic
↑これが通らない
なぜ。
と悩むこと40分。質問してみたら案外簡単だった。
テーブル二つ開いているのに排他制御がadLockOptimisticだと、更新を2か所の内どっちにかければいいか判りませんよね?
という事でした。
だから正解は
iRS.Open "SELECT T1.P_CD, I1.O_P_CD, I1.S_ID FROM T1 INNER JOIN I1 ON (T1.P_CD = I1.O_P_CD);", db, adOpenStatic, adLockReadOnly
とRead Onlyにしてあげないといけない。とのこと。