Die Datenbankfelder sind zur Designtime in die Queries importiert, um leichter darauf zugreifen zu können.
Man nennt die Felder, die schon zur Designtime angelegt wurden
persistente Felder.
Persistente Felder haben das Problem, dass die Definitionen von denen der Datenbank abweichen können.
(Z.B. wenn Felder in der
DB nachträglich verlängert wurden)
Bei persistenten Feldern in Delphi gibt es leider nur eine Alles-oder-Nichts-Strategie.
Entweder man hat persistente Felder oder man hat sie nicht und dann gelten die Felddaten aus der unterliegenden Datenbank.
Leider ist es nicht möglich im Objektinspektor gezielt einige Felddaten anzupassen (z.B. nur EditFormat ändern).
Bei diesen Nachteilen von persistenten Feldern, sollte man diese vermeiden wo es nur geht.
Der "leichtere Zugriff", weil Delphi für jedes persistente Feld eine Komponente bereitstellt, gleicht die Nachteile nicht aus.
Es gibt mindestens 5 Wege um auf ein Feld zuzugreifen:
Delphi-Quellcode:
var
strName:
string;
begin
strName :=
Query.Fields[0].AsString;
strName :=
Query.FieldByName('
LastName').AsString;
// bevorzugter Weg
strName :=
Query.FieldValues['
LastName'];
strName :=
Query['
LastName'];
// inbesondere beim schreibenden Zugriff sinnvoll
strName := QueryLastName.AsString;
// nur bei persistenten Feldern
Also mein Rat:
Lösche die persistenten Felder und benütze die Variante "bevorzugter Weg" von oben.