Странный (?) Update

minva
Дата: 13.10.2003 21:36:49
Есть таблица с полями
ID int identify
F1 varchar(10)
F2 varchar(10) default ‘’

На клиенте ADODataSet и грид. Вставляю запись в грид, в F1 пишу что-нибудь, делаю Post. Сервера получаю значение ID. Пишу значение в F2, делаю Post, Open/Close – получаю в F2 пустую строку. Начинаю разбираться и выясняю, что Update в ADODataSet формируется такой
updatewhere id=45 and F2 is Null
. Вспоминаю, что у меня F2=’‘ становится по умолчанию при вставке записи, поэтому запись и не находится, вспоминаю про ADOшное свойство ‘Update Resync’ (так кажется), всё начинает работать. Непонятно одно, зачем при Update пишется второе условие ‘and F2 is Null’ или ‘and F2 =’’
Luchkin Dmitry
Дата: 14.10.2003 07:02:58
очевидно для абсолютной идентификации записи, чтоб не разбираться с первичными ключами :))
ziktuw
Дата: 14.10.2003 10:32:12
Нет, ADO достаточно хорошо расправляется с ключами. Перечисление других полей делается для того, чтобы получить ошибку в случае когда кто-то другой уже изменил эту запись, чтобы не затереть изменения этого другого. К сожалению, в случае с дефолтами, а равно с присвоениями из триггера, этот метод требует обработку напильником - rs.Properties("Update Criteria") = adCriteriaKey и соответствующий Resync
minva
Дата: 14.10.2003 11:05:50
Вот-вот, у меня с настройками по умолчанию никаких ошибок, делает вид, что всё нормально проапдейтилось и молчит. По моему это грубая ошибка в ADO, хотя с себя вины я тоже не снимаю :-)
Дополнительный вопрос, где-то тут пробегало, что у Recordseta можно изменить запросы наI/U/D, генерируемые автоматом... Как?