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

Вниз

Обновление набора данных в 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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.019 c
1-27929
Пиноккио
2002-11-28 21:49
2002.12.09
Программный скролл DrawGrid


7-28313
Th
2002-10-08 21:09
2002.12.09
Как использовать средства DDK в Delphi


1-28080
sers
2002-11-28 08:58
2002.12.09
Список подстановки


1-27937
mila
2002-11-29 08:58
2002.12.09
как определить, что процесс уже завершился?


3-27864
Calm
2002-11-21 11:22
2002.12.09
Как запустить хранимую процедуру в MS SQL Interprise Manager?