Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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
2-1161872664
Ezorcist
2006-10-26 18:24
2006.11.19
Кнопка формы на панели задач


8-1141656784
Belorus
2006-03-06 17:53
2006.11.19
Медиа плеер.


6-1151044736
yaral
2006-06-23 10:38
2006.11.19
Кодировка писма IdMessage


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


2-1162382483
Vladimir1984
2006-11-01 15:01
2006.11.19
програмный print screen...





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский