Ver Mensaje Individual
  #29  
Antiguo 23-02-2016
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Reputación: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
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
  // Obtener posición actual del query que muestra
  BM := IBQuery1.GetBookmark;

  try
    // Modificar una columna (para el ejemplo uso otro qry)
    IBQuery2.Close;
    IBQuery2.SQL.Text := 'UPDATE TABLA SET CAMPO = :CAMPO WHERE ID = 1';
    IBQuery2.ParamByName('CAMPO').AsString := Edit1.Text;
    IBQuery2.ExecSQL;

    // Refrescar qry asociado al DBGrid
    IBQuery1.Close;
    IBQuery1.Open;
    IBQuery1.GotoBookmark(BM);

  finally
    IBQuery1.FreeBookmark(BM);
  end;
end;

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita