Я использую следующий SQL для записей ADO против SQLServer бэкэндом в VB6:Update ADO Recordset для вычисляемого поля
select c.name, taxid=
case when exists(select 1 from sometable where fld='abc')
then c.SSN else null end
Когда я пытаюсь обновить поле taxid в ряд в локально записей ADO жалуется на ошибку «Многоступенчатые операции сгенерированные ошибки. Проверьте каждое значение состояния». Я предполагаю, что это беспокоит тот факт, что поле налогообложения исходит из вычисленного поля, а не как столбец сырой таблицы. Для моих целей я никогда не буду настаивать на этих изменениях в базе данных, поэтому я ищу способ сообщить ADO, у которых нет намерения сохранять изменения, чтобы он позволял мне локально изменять данные.
Я бы ожидать ошибку, так как taxid не реальный столбец. Такая же ошибка, когда вывод - 'taxid = c.name + c.SSN'. Лично я бы не использовал набор записей в VB6 для сохранения обновлений в базе данных, а скорее использовал хранимую процедуру и отправил параметризованные вызовы в эту хранимую процедуру. Разумеется, эта процедура должна быть написана только для разрешения ввода для обновляемых столбцов. Я не знаю, есть ли способ заставить ADO подчиняться базовому определению. –
thx @Aaron, но я не сохраняю обновления в базе данных. Я только пытаюсь изменить значения в наборе записей для моих местных потребностей. Будет ли способ настроить набор записей так, чтобы ADO не «беспокоился» о проблемах с сохранением, которые никогда не произойдут? – sisdog
Вы пытались отключить набор записей? Установите rst.ActiveConnection = Nothing. – HK1