Лучинкин Юрий
Дата: 08.04.2005 14:45:23
Есть два почти одинаковых запроса
1)
select t.iTovID,v.iVidNo,t.iTovNO,t.cTovName
from dbo.m_vid as v
inner join dbo.m_tv as t on t.iVidID=v.iVidID
inner join dbo.tvotdost as t_o on t.iTovID=t_o.iTovID
where t_o.iOtdID=@iOtdID
2)
select t.iTovID,v.iVidNo,t.iTovNO,t.cTovName
from dbo.m_vid as v
inner join dbo.m_tv as t on t.iVidID=v.iVidID
inner join dbo.tvotdost2 as t_o on t.iTovID=t_o.iTovID
where t_o.iOtdID=@iOtdID
Отличаются они тем, что в первом tvotdost - это индексированное view,
а во втором tvotdost2 - это таблица с аналогичными столбцами.
На основе обоих создается Recordset на стороне клиента, в первом случае при редактирование cTovName получаем от Microsoft Cursor Engine ошибку "недостаточно сведений ключевого поля для обновления" NativeError=1007, Numdber=-2147467259, а во втором случае ошибки нет.
Далее, убираем из результатов первого запроса столбец v.iVidNo, и наблюдаем
чудесное исчезновение ошибки - условия выборки не поменялись, но ключевого поля стало хватать :))
Вопрос №1: почему это так?
Вопрос N2: есть ли способ заставить Recordset работать с первым запросом?
Очень бы хотелось:((