Hola anubis.
No he manejado los componentes
IBX en
Lazarus pero en
Delphi,
Refresh no es compatible con todos los
TDataSet. Además, si se trata de una consulta estática se recomienda cerrarla y abrirla nuevamente.
Por otro lado para actualizar un conjunto de datos, el método
Refresh vuelve a solicitar los datos de la tabla, no creo que tengas una degradación de velocidad por elegir una u otra alternativa (cerrar/abrir).
La ventaja mas notoria es que
Refresh mantendrá la posición de la fila actual, pero eso también podes lograrlo usando
Close/Open sobre
TIBQuery como en este ejemplo:
Código Delphi
[-]
...
var
BM: Pointer;
begin
BM := IBQuery1.GetBookmark;
try
IBQuery2.Close;
IBQuery2.SQL.Text := 'UPDATE TABLA SET CAMPO = :CAMPO WHERE ID = 1';
IBQuery2.ParamByName('CAMPO').AsString := Edit1.Text;
IBQuery2.ExecSQL;
IBQuery1.Close;
IBQuery1.Open;
IBQuery1.GotoBookmark(BM);
finally
IBQuery1.FreeBookmark(BM);
end;
end;
Saludos