Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2003.01.02;
Скачать: [xml.tar.bz2];

Вниз

Как заставить TClientDataSet перефильтроваться   Найти похожие ветки 

 
yaJohn   (2002-12-11 13:13) [0]

Приветствую великий Олл!
Есть ClientDataSet, который фильтруется по OnFilterRecord.
Меняем условие фильтрации. Говорим ДатаСету First Last или что-то еще, дабы перефильтроваться. Все работает.
Теперь задаем условие фильтрации которому не соответствует ни одна запись. ДатаСет послушно говорит RecordCount=0. И ни на какие попытки переместить курсор более не реагирует.
Т.е. меняем условие фильтрации но в гриде пусто, RecordCount=0. Тишина и покой.
Пример (дурацкий):
procedure TFrmMain.ClientDataSet1FilterRecord(DataSet: TDataSet;
var Accept: Boolean);
begin
Accept:=CheckBox1.Checked;
end;
Ну не Refresh же ему делать... Шибко медленно будет... Filtred:=false;Filtred:=true; не помогает.

Меня клинит и глючит. Столкните с мертвой точки. Как заставить этого поганца перефильтроваться?!

Заранее спасибо!


 
Johnmen   (2002-12-11 13:44) [1]

Из изложенного не видно проблемы...


 
yaJohn   (2002-12-11 15:00) [2]

Проблема в следующем (по примеру):
1)изначально CheckBox1.Checked=true соответственно видим все записи датасета.
2)устанавливаем CheckBox1.Checked=false и делаем, например First. Датасет пуст. Все логично.
3)снова устанавливаем CheckBox1.Checked=true. Логично ожидать появления в датасете всех записей. Однако этого не происходит и никакие манипуляции с датасетом не дают эффекта.


 
Johnmen   (2002-12-11 15:11) [3]

>Логично ожидать появления в датасете всех записей.
>Однако этого не происходит ...

Как это определяется ?

>...и никакие манипуляции с датасетом не дают эффекта.

Какие именно ?



 
yaJohn   (2002-12-11 15:29) [4]

Определяется визуально в ДБГриде, а так же по RecordCount.
Манипуляции по перемещению курсора First, Last, Next, PRior, а так же манипуляции с
Filtered (таковых я выдумал только две: :=true и :=false.

Насколько я понимаю, при RecordCount=0 OnFilterRecord просто не вызывается....



 
VAleksey   (2002-12-11 15:29) [5]

Это шутка что - ли ?
А где св-во Filtered устанавливается ?????????????


 
Johnmen   (2002-12-11 15:35) [6]

>yaJohn © (11.12.02 15:29)

Чудеса, да и только...
А если сделать Close-Open для ClientDataSet ? Нормально ?


 
yaJohn   (2002-12-11 15:41) [7]

>А где св-во Filtered устанавливается ?????????????
DesignTime. Примерчик - так, от фонаря. На самом деле фильтрация идет, конечно, по полям ДатаСета, а не по чекбоксу.
Шаманство призванное свершить сабж колдуется в OnChange котрола (контролов) которые содержата параметры фильтра.
Close-Open - не лучшая альтернатива Refresh. У меня по тех-заданию медленная сеть и прокачивать всю таблицу кри каждом клике юзера на чекбоксе я просто не могу.
Ну и кроме того, КлиентДатаСет может на момент фильтрации уже содержать дельту, что делает применение Refresh невозможным, а Open-Close - бессмысленным.



 
yaJohn   (2002-12-11 15:43) [8]

Мда, повторюсь. Трабла наблюдается ТОЛЪКО при RecordCount=0. Смены фильтров оставляющих в датасете хоть одну запись проходят гладко.


 
Johnmen   (2002-12-11 15:50) [9]

>yaJohn © (11.12.02 15:41)

Я разве что-то сказал по поводу необходимости применения Close-Open ? Нет ! Я лишь интересовался результатом эксперимента...
Ну да ладно...:)



 
yaJohn   (2002-12-11 15:58) [10]

Я такой эксперимент проводил. Результат - положительный. Однако метод неприемлимый. с.м. выше.



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2003.01.02;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.58 MB
Время: 0.03 c
1-1820
Serg_ua
2002-12-20 20:39
2003.01.02
Hooks


4-1926
alex134
2002-11-16 17:55
2003.01.02
хук на окно


3-1758
adogg
2002-12-11 13:34
2003.01.02
Проблема с ADOQuery и MS Access


14-1869
diww
2002-12-11 14:10
2003.01.02
возможно ли такое? чисто теоретически


1-1822
Djon007
2002-12-18 22:02
2003.01.02
Help!!!!!!!!!!!!





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