Autor Beitrag
Daniel L.
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 140
Erhaltene Danke: 14

W7, W8
TurboD Prof, Delphi Community
BeitragVerfasst: Mi 24.11.10 13:43 
Hi,

kann man auf eine Tabelle zugreifen, in dem man den Namen der TField - Komponente nimmt, und nicht den Feldnamen?

Beispiel: in einer Tabelle existiert das Feld 'Vorname'

in ClientDataSet1 ist ein TStringField definiert mit
Fieldname = 'Vorname' und
Name = 'ClientDataSet1Vorname'

Auf die Tabelle zugreifen geht z.B. mit ClientDataSet1.fieldByName (’Vorname’)
oder ClientDataSet1.fields [0]

Wie kann ich zugreifen, wenn ich den Namen der TStringField Komponente, also ClientDataSet1Vorname benutze?

Mir geht es darum, im Laufe der Entwicklung evtl. sinnvollere Namen zum Zugriff auf die Felder zu erstellen, ohne die Tabelle jedesmal umzubauen zu müssen

Vielen Dank und Gruss: Daniel
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19315
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mi 24.11.10 13:49 
Ich benutze einfach Konstanten für die Feldnamen. ;-)
Daniel L. Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 140
Erhaltene Danke: 14

W7, W8
TurboD Prof, Delphi Community
BeitragVerfasst: Mi 24.11.10 14:03 
Danke - praktische Lösung!

Nur mal so aus Interesse, ginge auch der Weg über den TField Komponentnamen?
Martok
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 3661
Erhaltene Danke: 604

Win 8.1, Win 10 x64
Pascal: Lazarus Snapshot, Delphi 7,2007; PHP, JS: WebStorm
BeitragVerfasst: Mi 24.11.10 14:13 
ClientDataSet1Vorname.AsString?

Das kann unmöglich deine Frage sein, was genau ist das wirkliche Problem? :mrgreen:

_________________
"The phoenix's price isn't inevitable. It's not part of some deep balance built into the universe. It's just the parts of the game where you haven't figured out yet how to cheat."
Daniel L. Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 140
Erhaltene Danke: 14

W7, W8
TurboD Prof, Delphi Community
BeitragVerfasst: Mi 24.11.10 14:57 
Mein eigentliches Problem, die Feldnamen mit anderem Namen anzusprechen als in der Tabelle vorgegeben, ist durch Jaenickes Konstanten Alias gelöst.
Ich wollte jetzt nur noch meine Idee aufgreifen, über den Komponentnamen der TField Komponente auf die Feldnamen zuzugreifen.

Irgendwas wie ClientDataSet1.FieldByName (ClientDataSet1VorName.FieldName);

...scheint aber nicht möglich zu sein?
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19315
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mi 24.11.10 15:28 
user profile iconDaniel L. hat folgendes geschrieben Zum zitierten Posting springen:
Irgendwas wie ClientDataSet1.FieldByName (ClientDataSet1VorName.FieldName);
Du hast doch mit deinem TStringField schon das entsprechende Feld. :gruebel:
Das meinte user profile iconMartok in seinem Post auch.
Ravy
Hält's aus hier
Beiträge: 6



BeitragVerfasst: Mi 24.11.10 15:32 
Es macht durchaus Sinn ein Feld nicht andauernd über FieldByName anzusprechen, wenn dieses in der Verarbeitung oft verwendet wird. FieldByName ist eine Suchroutine welche immer wieder in der Feldliste eines Records das entsprechende Feld über den Feldnamen suchen muss. Bei Records mit sehr vielen Feldern kostet das unnötig Rechenzeit.

Du kannst alternativ einfach eine Variable vom Typ TField definieren und dann das gewünschte Feld über die Variable ansprechen.

Beispiel:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
var
  Country : TField;
begin
  Country := Table.FieldByName('Country');
  ...
  ...
  Country.AsString := 'Germany';
end;
Daniel L. Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 140
Erhaltene Danke: 14

W7, W8
TurboD Prof, Delphi Community
BeitragVerfasst: Mi 24.11.10 16:18 
@Jaenicke & Martok

Ähem...jetzt seh ich's auch schon :oops: