Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.11.19;
Скачать: CL | DM;

Вниз

Вопросы с 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;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.034 c
1-1160554311
kyn66
2006-10-11 12:11
2006.11.19
Сохранение экрана в PNG


2-1162448206
alucard
2006-11-02 09:16
2006.11.19
Подскажите как ловить нажатие клавиш в Windows?


11-1121340015
Barloggg
2005-07-14 15:20
2006.11.19
Хочу избавиться от MCK


2-1162364066
jimy
2006-11-01 09:54
2006.11.19
dcu


15-1161973724
DillerXX
2006-10-27 22:28
2006.11.19
Комментируете ли вы свои сорцы