FireDAC.Comp.DataSet.TFDDataSet.RefreshRecord

Aus RAD Studio API Documentation
Wechseln zu: Navigation, Suche

Delphi

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

C++

bool __fastcall RefreshRecord(bool AClearRow = true);

Eigenschaften

Typ Sichtbarkeit Quelle Unit Übergeordnet
function public
FireDAC.Comp.DataSet.pas
FireDAC.Comp.DataSet.hpp
FireDAC.Comp.DataSet TFDDataSet

Beschreibung

Liest die Feldwerte erneut aus dem aktuellen Datensatz einer Datenquelle.

Mit RefreshRecord verwerfen Sie alle Änderungen des aktuellen Datensatzes und lesen ihn erneut aus einer Datenquelle. Die ähnliche Methode, TDataSet.Refresh, ersetzt den gesamten Inhalt der Datenmenge durch erneutes Ausführen der SQL-Anweisung.

Zum erneuten Lesen des Datensatzes führt FireDAC die folgenden Schritte aus:

  • Wenn die Ereignisbehandlungsroutine OnUpdateRecord zugewiesen ist, dann wird sie mit dem Wert arFetchRow für ARequest aufgerufen.
  • Wenn die Ereignisbehandlungsroutine nicht zugewiesen ist oder AAction mit dem Wert eaDefault zurückgibt, wird Folgendes ausgeführt:
    • Wenn TFDAdaptedDataSet.UpdateObject zugewiesen ist, und TFDUpdateSQL.FetchRowSQL nicht leer ist, dann wird diese SQL-Anweisung ausgeführt.
    • Ansonsten generiert FireDAC eine SELECT-Anweisung, die eine einzelne Zeile aus der Datenbank liest und die Anweisung ausführt.

Wenn die Abfrage für eine Datenquelle keine Zeilen liefert (z. B., wenn ein Datensatz gelöscht wurde), dann wird – falls UpdateOptions.RefreshDelete True ist, ein Datensatz aus der Datenmenge entfernt, ansonsten wird eine Exception ausgelöst. Wenn der Parameter AClearRow auf True (Vorgabe) gesetzt ist, dann wird der Datensatz zuerst gelöscht. Ansonsten überschreiben die gelesenen Werte die entsprechenden Spaltenwerte.

Die Methode gibt True zurück, wenn ein Datensatz aktualisiert wurde. Andernfalls wird False zurückgegeben, wenn ein Datensatz aus der Datenmenge gelöscht wurde.

Beispiel

FDQuery1.UpdateObject := ADUpdateSQL;  
// PL/SQL-Block, der eine gepackte Prozedur aufruft, die Kundendaten anhand der ID zurückgibt  
FDUpdateSQL.FetchRowSQL.Text := 'begin cust_pack.read_cust_data(:new_name, :new_company, :new_state, :old_id); end;';  
// Ist immer erforderlich, um Ausgabeparameter festzulegen  
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;

Siehe auch