Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

RefreshSQL [D6, IB6.x, FireBird]


EdSl ©   (2003-02-26 22:33:00) 

Как изменить свойство RefreshSQL компонента IBDataSet не переоткрывая таблицу. То есть изменение происходит только для текущей записи, а необходимо, чтобы оно происходило для всех записей, у которых значения в определенном поле совпадают.


kaif   (2003-02-28 01:06:00) [1]

var
r: integer;

withIBQuery1 do
begin
r := RecNo;
DisableControls;
try
Locate( критерии поиска );
whilenot eof and ( условие ) do
begin
Refresh;
Next;
end;
finally
RecNo := r;
EnableControls;
end;
end;


Надеюсь, набор упорядочен по полю, которое будет меняться. Если нет, то нужно сканировать весь набор. Тогда уж лучше переоткрыть запрос.


Александр Спелицин   (2003-02-27 16:42:00) [2]


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

Так отфильтруйте эти записи и для каждой сделайте RefreshRecord.


DarkGreen   (2003-02-27 09:53:00) [3]

select for update? :-)


ЮЮ   (2003-02-27 07:27:00) [4]

Никак. Запрос в RefreshSQL предназначен именно для однозначного определения одной (текущей) записи. А разве можно изменить несколько записей DataSet-а одновременно ? :-)


DarkGreen   (2003-02-27 05:40:00) [5]

Используй TIBUpdateSQL в нем в запросе рефреш пропиши
select * from My_Table where Key_Field = :KeyField тогда он будет рефрешить только одну строку из датасета


Наверх

Титульная страница Поиск, карта сайта Написать письмо