Поскольку в комментариях был дан ответ, я хотел превратить его в лучший ответ
Ваша проблема в том, что MyConn.BeginTrans()
не имеет MyConn.CommitTrans()
или MyConn.RollbackTrans()
после оператора вставки в выбранном вами случае; поэтому выдается ошибка при попытке обновить данные. Если вы выполните коммит или откат после выполнения вставки, то ваше следующее выполнение должно работать нормально. Тот факт, что MyConn.BeginTrans () находится перед простым оператором выбора, вы можете подумать о его перемещении после выбора.
Я бы сделал что-то вроде этого (если вы хотите использовать транзакции):
'MyConn.BeginTrans()
sql = "Select someReport from MyTable"
set rs = MyConn.Execute(sql)
do while not rs.EOF
TIMESTAMP = rs("TIMESTAMP")
rev = rs("REV")
select case whatChange
case "Target date"
MyConn.BeginTrans()
sql = "Insert into " & caJustTable & _
" (TEXT, TIMESTAMP, CURRENTFLAG)" & _
" Values ( Text& "','" & COPY_TS & "', 'Y')""
MyConn.Execute(sql)
MyConn.CommitTrans() 'You'll want to validate your data inserts properly before committing
end select
MyConn.BeginTrans()
sql = "update table, set this to that"
MyConn.Execute(sql) <-------- error happens here sometimes....
MyConn.CommitTrans()'You'll want to validate your data inserts properly before committing
end if
rs.movenext
loop
rs.close()
set rs = nothing
Транзакции обычно используются для вставки / обновления или удаления данных. Поскольку вы прокомментировали, вы не знаете, почему существует оператор BeginTrans (), тогда да, вы можете удалить его полностью, но я бы порекомендовал прочитать транзакции и убедиться, что он вам не нужен после операторов вставки и обновления, которые происходят позже в код.
Вот справочник по транзакциям SQL:
http://www.firstsql.com/tutor5.htm