![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
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 тогда он будет рефрешить только одну строку из датасета