DAO для .mdb, ADO для .mdf сравнения - PullRequest
1 голос
/ 28 ноября 2010

Этот код, редактирующий набор записей на основе объединенных таблиц, работает в базе данных DAO / .mdb

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

Код был преобразован в ado в базе данных сервера 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 и не получил сообщения об ошибке, но была отредактирована только одна запись таблицы.

1 Ответ

2 голосов
/ 28 ноября 2010

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

...