![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Вопросы с ClientDataSet (UpdateMode, ProviderFlags) [D7, MSSQL]
Bless © (2006-09-18 16:20:00)Решил попробовать ClientDataSet.
В этой связи сразу возникли два вопроса:
1)У DataSetProvider UpdateMode=upWhereKeyOnly. По идее это значит, что при обновлении записи провайдер будет в where использовать только ключевые поля. Но почему-то при ClientDataSet1.UpplyUpdates(0); ругается
Unable to find record. No key specified
Почему? DataSetProvider.dataset = ADODataSet1, у которого CommandText = 'select * from t1', а у таблицы t1 есть первичный ключ.
2)
Если я у поля ClientDataSet-а поставлю ProviderFlags pflnUpdate = true, то изменения этого поля (если верить справке) не должны включаться провайдером в UPDATE, так ведь? Но почему-то включаются. Почему?
Bless (2006-09-19 12:41:00) [1]Возник еще один вопрос:
Вызов метода CDS.RefreshRecord приводит к перезапросу всех данных, а не только текущей строки. Что где выставить чтоб это изменить?
Bless (2006-09-18 17:26:00) [2]
> Romkin © (18.09.06 17:01) [4]
> Указываются флаги у полей того датасета, к которому подключен
> провайдер
Помогло, спасибо. Сам бы никогда не догадался.
Просто когда-то я пробовал (и сейчас проверил еще раз) выставлять флаги у ADODataset (без ClientDataSet) в надежде исключить какое-то поле из UPDATE. Не помогало. А для связки ADODataset ->DataSetProvider->ClientDataSet то же самое оказывается работает.
> Desdechado © (18.09.06 17:00) [3]
>
> > А где указать-то?
> А подумать? F1 может помочь.
>
Оказывается, Romkin[4] - это ответ на оба вопроса :)
Romkin (2006-09-18 17:01:00) [3]Указываются флаги у полей того датасета, к которому подключен провайдер
Desdechado (2006-09-18 17:00:00) [4]> А где указать-то?
А подумать? F1 может помочь.
Bless (2006-09-18 16:53:00) [5]
> Desdechado © (18.09.06 16:38) [1]
>
> 1. pfInKey The field is included in the WHERE clause when
> the provider’s UpdateMode is upWhereKeyOnly.
> Нужно указать, какие поля ключевые. У тебя не указано, вот
> и ругается.
>
А где указать-то?
> 2.Т.е. будет включено в UPDATE
Опечатался.
Если я у поля ClientDataSet-а поставлю ProviderFlags pflnUpdate = false, то изменения этого поля (если верить справке) не должны включаться провайдером в UPDATE, так ведь? Но почему-то включаются. Почему?
Desdechado (2006-09-18 16:38:00) [6]1. pfInKey The field is included in the WHERE clause when the provider’s UpdateMode is upWhereKeyOnly.
Нужно указать, какие поля ключевые. У тебя не указано, вот и ругается.
2. pfInUpdate The field can be includedin UPDATE statements. (That is, it can be modified)
Т.е. будет включено в UPDATE