Kann ich zumindest für
Ado-Dataset auf
MsSQL zugreifend bestätigen: Habe eben im Server Manager einen Wert geändert und danach den Filter im bereits verbundenen (Active = True)
Ado-Dataset gesetzt mit dem Resultat, daß weiterhin der alte Wert in der betreffenen Spalte angezeigt wurde. Demnach filtert
Ado wohl nur die eigene Datenmenge und nicht die in der
DB vorhandene. Erst ein Open/Close des Datasets bringt den geänderten Wert zur Ansicht z.B. im DBGrid.
Seltsamerweise erhalte ich beim Versuch, statt Open/Close ein Refresh auszuführen, diese Fehlermeldung:
' Nicht genügend Basistabelleninformationen zum Aktualisieren '
Wie sich das bei anderen
DB-Komponenten, noch dazu unter FMX verhält, läßt sich mit Sicherheit ermitteln. Aber ich gehe mal davon aus, daß es sich hier um ein Standard-Verhalten handelt, von dem seriöse Anbieter von
DB-Komponenten nicht abweichen.
Delphi-Quellcode:
procedure TFormMain.FilterTest;
Var
Id : Integer;
begin
Id := DatMod.Tab_VDateien.FieldByName('Id_Video').AsInteger;
IF DatMod.Tab_VDateien.Filter = '' THEN
DatMod.Tab_VDateien.Filter := 'Jahr = 1960' ELSE
DatMod.Tab_VDateien.Filter := '';
// Dieser Befehl führt zu besagter Fehlermeldung:
// DatMod.Tab_VDateien.Refresh;
// Damit werden auch zwischenzeitlich geänderte Daten korrekt angezeigt:
DatMod.Tab_VDateien.Close;
DatMod.Tab_VDateien.Open;
DatMod.Tab_VDateien.Locate('Id_Video',Id,[]);
end;