procedure Refresh

Syntax:
procedure  refresh;


Beschreibung:

Die Methode Refresh aktualisiert eine Datenmenge durch erneutes Abrufen der Daten aus der Datenbank. Mit Refresh können Sie sicherstellen, dass die neuesten Daten aus einer Datenbank verwendet werden. Wird beispielsweise in einer Anwendung der Filter einer Datenmenge deaktiviert, sollte anschließend sofort Refresh aufgerufen werden, damit alle Datensätze in der Datenmenge angezeigt werden und nicht nur diejenigen, die mit der Filterbedingung übereinstimmen.

Hinweis: Die Methode Refresh funktioniert nicht bei allen von TDataSet abgeleiteten Klassen. Insbesondere TQuery-Komponenten unterstützen Refresh nicht, wenn die Abfrage nicht "live" ist. Um ein statisches TQuery-Objekt zu aktualisieren, schließen und öffnen Sie die Datenmenge.

TDataSet generiert vor der Datensatzaktualisierung ein BeforeRefresh- und nach der Aktualisierung ein AfterRefresh-Ereignis.

Hinweis: Bei den meisten Datenmengen bleibt die aktuelle Datensatzposition erhalten, wenn eine Aktualisierung durchgeführt wird. Dies ist jedoch nicht immer möglich. Es könnte beispielsweise sein, dass der aktuelle Datensatz zwischenzeitlich durch einen Benutzer auf dem Server gelöscht wurde. Unidirektionale Datenmengen haben keinen Mechanismus, der nach der Aktualisierung wieder auf den aktuellen Datensatz positioniert. Bei diesen Datenmengen ist nach einer Aktualisierung immer der erste Datensatz aktiv.

Warnung: Unidirektionale Datenmengen werden durch Schließen und erneutes Öffnen des Cursors aktualisiert. Dies zu kann zu unerwünschten Nebeneffekten führen (z.B. aufgrund einer Ereignisbehandlungsroutine für BeforeClose, AfterClose, BeforeOpen oder AfterOpen).
Beispiel:

//Im folgenden Beispiel wird ein Bereich für eine Datenmenge definiert. Für das Formular werden zwei Eingabefelder, eine Datenquelle, //eine Client-Datenmenge oder Tabelle, ein Datenbankgitter und eine Schaltfläche benötigt.

Nur Windows:

procedure TForm1.FormActivate(Sender: TObject);

begin Table1.DatabaseName := 'DBDemos'; Table1.TableName := 'Customer.db'; Table1.Active := True; Table1.IndexName := 'ByCompany'; end;

procedure TForm1.Button1Click(Sender: TObject); begin if Button1.Caption = '&Apply Range' then begin Table1.SetRange(Edit1.Text,Edit2.Text); Button1.Caption := '&Drop Range'; end else begin Table1.CancelRange; Table1.Refresh;

Button1.Caption := '&Apply Range'; end; end;

Plattformübergreifend:

procedure TForm1.FormActivate(Sender: TObject);

begin ClientDataSet1.FileName := 'Customer.cds'; ClientDataSet1.Active := True; ClientDataSet1.IndexName := 'ByCompany'; end;

procedure TForm1.Button1Click(Sender: TObject); begin if Button1.Caption = '&Apply Range' then begin ClientDataSet1.SetRange(Edit1.Text,Edit2.Text); Button1.Caption := '&Drop Range'; end else begin ClientDataSet1.CancelRange; ClientDataSet1.Refresh;

Button1.Caption := '&Apply Range'; end; end;