Главная страница
    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.04 c
15-1162236463
cyborg
2006-10-30 22:27
2006.11.19
Что за ерунда


2-1162252341
Warining
2006-10-31 02:52
2006.11.19
Почему возникает такое предупреждение ?


2-1162358799
apic
2006-11-01 08:26
2006.11.19
TPersistent


5-1143640846
Gaval
2006-03-29 18:00
2006.11.19
fastreport


1-1160550187
Calibr
2006-10-11 11:03
2006.11.19
Количество строк в файле





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский