...есть Interbase база, в ней MyTable таблица, в которой 8000 записей.
Таблица отображается через DBGrid1 (DBGrid1.DataSource:=TIBQuery).
Ниже DBGrid1 - панель с компонентами, которая отображает некоторые данные из полей MyTable;
При обновлении записи пользователем [№1] - пользователь [№2] не видит обновленных (COMMIT) на сервере данных,
...что бы пользователь [№2] увидел обновленные данные в выбранной им записи таблицы MyTable, ему - необходимо послать запрос типа: "SELECT * FROM MyTable".
Т.к. записей в MyTable много - на запрос/обновление MyTable уходит много времени!
ВОПРОС ПО IBQuery: Подскажите пожалуйста, существует ли какой то метод обновить выбранную запись в MyTable - не обновляя все остальные,
что бы пользователь [#2] мог обновить только текущую/читаемую запись в таблице, избежав обновления списка остальных данных во всей таблице!??
Код: Выделить всё
IBQuery.ForcedRefresh:=True
...а вот сам Refresh работать не хочет, ...говорит: Cannot refresh row. (No refresh query)
Куда же вписывать refresh query?
...если нет нормальных решений для IBQuery - расскажите пожалуйста, в чем примудрости работы параметрами у IBDataSet?
Например, не понятно вот что, ...есть таблица:
Код: Выделить всё
CREATE TABLE IBcompany(
AINC INTEGER DEFAULT NULL,
company VARCHAR(255) DEFAULT NULL)
IBDataSet1.InsertSQL.Text:='insert into IBCOMPANY(AINC, COMPANY) values (:AINC, :COMPANY)';
Код: Выделить всё
procedure TForm1.Button1Click(Sender: TObject);
begin IBDataSet1.Close;
IBDataSet1.ParamByName('COMPANY').AsString:='NEW_RECORD';
IBDataSet1.ParamByName('AINC').AsInteger:=Random(100);
IBDataSet1.Insert;
IBDataSet1.Open;
end; // procedure
Код: Выделить всё
procedure TForm1.Button1Click(Sender: TObject);
begin IBDataSet1.Close;
IBDataSet1.Params.ByName('COMPANY').AsString:='NEW_RECORD';
IBDataSet1.Params.ByName('AINC').AsInteger:=Random(100);
IBDataSet1.Insert;
IBDataSet1.Open;
end; // procedure