FireDAC.Comp.DataSet.TFDDataSet.RefreshRecord
Delphi
function RefreshRecord(AClearRow: Boolean = True): Boolean;
C++
bool __fastcall RefreshRecord(bool AClearRow = true);
Inhaltsverzeichnis
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ürARequest
aufgerufen. - Wenn die Ereignisbehandlungsroutine nicht zugewiesen ist oder
AAction
mit dem WerteaDefault
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;