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

Вниз

Обновление набора данных в DBGrid -- требуется помощь   Найти похожие ветки 

 
Сергей Б.   (2002-11-20 12:21) [0]

Здравствуйте, ВСЕМ!

Имеем: IBDataSet, значение SelectSQL которого определяется след. образом: "select * from Table1 where Type = 0", и связанный с ним DBGrid.

Делаем: Устанавливаем значение поля текущей записи Type = 1

Хотим, чтобы данная запись пропала из набора данных, т.е. уже теперь не отображалась в DBGrid, а текущей стала следующая по порядку запись.

Проблема: не получается! :( Т.е. запись пропадает лишь при переоткрытии набора данных, а надо динамически. КАК?


 
ЮЮ   (2002-11-20 12:56) [1]

Поставить фильтр, аналогичный условию отбора


 
Сергей Б.   (2002-11-20 13:16) [2]

Кому поставить и как? IBDataSet"у? У него есть св-во Filtered, но как им пользоваться?


 
Наталия   (2002-11-20 13:33) [3]

onfilterecords тебе должно помочь


 
Prooksius   (2002-11-20 13:46) [4]

У FIBPlus есть такая процедурка - FilterOut

"Remove" the current record from FromDS. (It marks the record deleted without causing a post.)


 
Сергей Б.   (2002-11-20 13:52) [5]

Фильтр попробовал - не помогло. :(

//У FIBPlus есть такая процедурка - FilterOut

Хотелось бы обойтись стандартными IB компонентами...


 
Fareader   (2002-11-20 14:00) [6]

2Сергей Б. (20.11.02 13:52)
А ты не пробовал делать Refresh?


 
Сергей Б.   (2002-11-20 14:14) [7]

2 Fareader © (20.11.02 14:00)

Пробовал :) что-то ему безразлично...


 
Fareader   (2002-11-20 14:18) [8]

А запрос в Refresh написан?
Проверь чтобы отбиралась именно текущая запись, т.е. оставь только ключевое поле.


 
Сергей Б.   (2002-11-20 14:52) [9]

Запрос написан, естественно отбор по ключевому полю. Ему все равно фиолетово. Измененные данные - да, показывает, а вот исключать по фильтру не хочет, редиска.

Впрочем, проблема решена благодаря подсказке Наталии (какие оказывается талантливые девушки-прграммеры :). Вот такой обработчик помог все сделать:


procedure TClientChild.DS1FilterRecord(DataSet: TDataSet; var Accept: Boolean);
begin
Accept := DataSet["Type"] = 0;
end;


 
Сергей Б.   (2002-11-20 14:57) [10]

Но, вопросы на этом не закончены!!! Теперь требуется сделать обратную операцию: изменить значение Type на 0 и, желательно, не переоткрывать втупую весь DataSet, а постараться лишь подчерпнуть вновь объявившуюся запись. Такое возможно?


 
Fareader   (2002-11-20 15:06) [11]

:)


 
Сергей Б.   (2002-11-20 18:06) [12]

Я чувствую, вопрос таки останется без ответа... :(


 
Prooksius   (2002-11-20 20:34) [13]

2 Сергей Б. (20.11.02 14:57)
Такого ты не сделаешь без переоткрытия датасета.
Хотя, в FIBPlus есть такая процедурка: FilterIn
Но вообще-то я думаю, что это изврат.
Так что переоткрывай. :(



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

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

Наверх





Память: 0.47 MB
Время: 0.014 c
3-27890
бобёр
2002-11-21 12:49
2002.12.09
Синхронизация таблиц


1-28065
Arhangel
2002-11-27 19:42
2002.12.09
Package


1-27926
Cranium
2002-11-28 22:58
2002.12.09
Как запретить возникновения события компонента?


1-28084
shust
2002-11-28 11:02
2002.12.09
Как загрузить анимированный курсор?


4-28355
kostik78ua
2002-10-28 15:42
2002.12.09
Winexec





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