FireDAC.Comp.DataSet.TFDDataSet.RefreshRecord

De RAD Studio API Documentation
Aller à : navigation, rechercher

Delphi

function RefreshRecord(AClearRow: Boolean = True): Boolean;

C++

bool __fastcall RefreshRecord(bool AClearRow = true);

Propriétés

Type Visibilité  Source Unité  Parent
function public
FireDAC.Comp.DataSet.pas
FireDAC.Comp.DataSet.hpp
FireDAC.Comp.DataSet TFDDataSet


Description

Relit les valeurs de champs de l'enregistrement en cours à partir d'une source de données.

Utilisez RefreshRecord pour annuler toutes les modifications de l'enregistrement en cours et relire cet enregistrement à partir d'une source de données. Une méthode similaire, TDataSet.Refresh, remplace le contenu entier de l'ensemble de données en re-exécutant la commande SQL. 

Pour relire l'enregistrement, FireDAC effectue les étapes suivantes :

  • Si le gestionnaire d'événement OnUpdateRecord est assigné, il est appelé avec ARequest en prenant la valeur de arFetchRow.
  • Si le gestionnaire d'événement n'est pas assigné ou s'il renvoie AAction avec la valeur eaDefault, alors :
    • Si TFDAdaptedDataSet.UpdateObject est assigné et TFDUpdateSQL.FetchRowSQL n'est pas vide, cette commande SQL est exécutée.
    • Sinon, FireDAC génère une commande SELECT qui relit une seule ligne à partir de la base de données et exécute la commande.
      • Remarque: La commande générée est SELECT A.* FROM (<insérer la commande SQL d'origine>) A WHERE (<comparaison des champs clés>). La commande SQL d'origine doit être compatible avec la commande générée. Par exemple, avec SQL Server les éléments de la liste SELECT doivent avoir un nom unique, sinon l'erreur "La colonne 'Xxx' a été spécifiée plusieurs fois pour 'A'" est renvoyée.

Si la requête vers une source de données ne renvoie aucune ligne (par exemple, lors de la suppression d'un enregistrement), lorsque UpdateOptions.RefreshDelete vaut True, un enregistrement est retiré d'un ensemble de données. Sinon, une exception est déclenchée. Lorsque le paramètre AClearRow est défini sur True (valeur par défaut), l'enregistrement est initialement effacé. Sinon, les valeurs de lecture remplacent les valeurs de colonne correspondantes. 

La méthode renvoie True si un enregistrement est actualisé. Sinon, elle renvoie False lorsque l'enregistrement est supprimé d'un ensemble de données.

Exemple

FDQuery1.UpdateObject := ADUpdateSQL;
// PL/SQL block calling packaged procedure returning customer data by its ID
FDUpdateSQL.FetchRowSQL.Text := 'begin cust_pack.read_cust_data(:new_name, :new_company, :new_state, :old_id); end;';
// Is always required to set up output parameters
with FDUpdateSQL.Commands[arFetchRow] do begin
  Params[0].ParamType := ptOutput;
  Params[0].DataType := ftString;
  Params[1].ParamType := ptOutput;
  Params[1].DataType := ftString;
  Params[2].ParamType := ptOutput;
  Params[2].DataType := ftString;
end;
...
FDQuery1.RefreshRecord;

Voir aussi