Форум: "Базы";
Текущий архив: 2006.11.19;
Скачать: [xml.tar.bz2];
ВнизВопросы с ClientDataSet (UpdateMode, ProviderFlags) Найти похожие ветки
← →
Bless © (2006-09-18 16:20) [0]Решил попробовать 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, так ведь? Но почему-то включаются. Почему?
← →
Desdechado © (2006-09-18 16:38) [1]1. pfInKey The field is included in the WHERE clause when the provider’s UpdateMode is upWhereKeyOnly.
Нужно указать, какие поля ключевые. У тебя не указано, вот и ругается.
2. pfInUpdate The field can be included in UPDATE statements. (That is, it can be modified)
Т.е. будет включено в UPDATE
← →
Bless © (2006-09-18 16:53) [2]
> 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 17:00) [3]> А где указать-то?
А подумать? F1 может помочь.
← →
Romkin © (2006-09-18 17:01) [4]Указываются флаги у полей того датасета, к которому подключен провайдер
← →
Bless © (2006-09-18 17:26) [5]
> Romkin © (18.09.06 17:01) [4]
> Указываются флаги у полей того датасета, к которому подключен
> провайдер
Помогло, спасибо. Сам бы никогда не догадался.
Просто когда-то я пробовал (и сейчас проверил еще раз) выставлять флаги у ADODataset (без ClientDataSet) в надежде исключить какое-то поле из UPDATE. Не помогало. А для связки ADODataset ->DataSetProvider->ClientDataSet то же самое оказывается работает.
> Desdechado © (18.09.06 17:00) [3]
>
> > А где указать-то?
> А подумать? F1 может помочь.
>
Оказывается, Romkin[4] - это ответ на оба вопроса :)
← →
Bless © (2006-09-19 12:41) [6]Возник еще один вопрос:
Вызов метода CDS.RefreshRecord приводит к перезапросу всех данных, а не только текущей строки. Что где выставить чтоб это изменить?
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2006.11.19;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.051 c