2010-11-28 2 views
1

Этот код редактирования записей, основанный на соединяемых таблиц работает в DAO/.mdb базы данныхDAO к .mdb, ADO к .mdf Сравнение

 RS.Edit 
      RS.fields("fieldA").value = 0 'in table A 
      RS.fields("fieldB").value = 0 ' in table B     
    RS.Update 

Код был преобразован в лишних слов в базе данных SQL-сервера и не удалось с сообщением об ошибке:

ошибка выполнения «-2147467259» (80004005)»: не удается вставить или обновить столбцы из нескольких таблиц.

Однако, как представляется, будет работать, если она изменяется следующим образом:

  RS.fields("fieldA").value = 0 'in table A 
    RS.Update 
      RS.fields("fieldB").value = 0 ' in table B     
    RS.Update 

Это нормальный способ делать вещи с SQL сервером или есть Гоча к нему. Я прошу, потому что, пытаясь найти решение (до того, как я включил дополнительный оператор обновления), я изменил тип набора записей на batchoptimistic, и у меня не появилось сообщение об ошибке, но была отредактирована запись только одной таблицы.

+0

Что именно говорится в сообщении об ошибке? – Heinzi 2010-11-28 12:14:42

+0

@Heinzi, Извините, я должен был это сделать, я отредактировал вопрос, чтобы вставить точное сообщение об ошибке. – jjb 2010-11-28 12:51:23

ответ

2

По-видимому, источником данных вашего набора записей является SQL, возвращающий данные из нескольких таблиц. Да, это нормально, что вы можете обновлять только одну таблицу за раз. Если вы хотите обновлять значения из нескольких таблиц за один атомный шаг (чтобы ни один другой клиент не мог прочитать «промежуточное значение», где одна таблица была изменена, а другая - нет), вам необходимо указать use a transaction.

Смежные вопросы