FireDAC.Comp.DataSet.TFDDataSet.RefreshRecord
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 dearFetchRow
. - Si le gestionnaire d'événement n'est pas assigné ou s'il renvoie
AAction
avec la valeureaDefault
, alors :- Si TFDAdaptedDataSet.UpdateObject est assigné et que 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.
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 est 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;