Einzelnen Beitrag anzeigen

Benutzerbild von sx2008
sx2008

Registriert seit: 15. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#2

AW: TField.Size zur Laufzeit anpassen ohne doppeltes Öffnen der Query

  Alt 15. Feb 2013, 14:40
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.
  Mit Zitat antworten Zitat