Autor |
Beitrag |
Daniel L.
      
Beiträge: 140
Erhaltene Danke: 14
W7, W8
TurboD Prof, Delphi Community
|
Verfasst: 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
      
Beiträge: 19315
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Mi 24.11.10 13:49
Ich benutze einfach Konstanten für die Feldnamen. 
|
|
Daniel L. 
      
Beiträge: 140
Erhaltene Danke: 14
W7, W8
TurboD Prof, Delphi Community
|
Verfasst: Mi 24.11.10 14:03
Danke - praktische Lösung!
Nur mal so aus Interesse, ginge auch der Weg über den TField Komponentnamen?
|
|
Martok
      
Beiträge: 3661
Erhaltene Danke: 604
Win 8.1, Win 10 x64
Pascal: Lazarus Snapshot, Delphi 7,2007; PHP, JS: WebStorm
|
Verfasst: Mi 24.11.10 14:13
ClientDataSet1Vorname.AsString?
Das kann unmöglich deine Frage sein, was genau ist das wirkliche Problem? 
_________________ "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. 
      
Beiträge: 140
Erhaltene Danke: 14
W7, W8
TurboD Prof, Delphi Community
|
Verfasst: 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
      
Beiträge: 19315
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Mi 24.11.10 15:28
Daniel L. hat folgendes geschrieben : | Irgendwas wie ClientDataSet1.FieldByName (ClientDataSet1VorName.FieldName); |
Du hast doch mit deinem TStringField schon das entsprechende Feld.
Das meinte Martok in seinem Post auch.
|
|
Ravy
Hält's aus hier
Beiträge: 6
|
Verfasst: 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:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8:
| var Country : TField; begin Country := Table.FieldByName('Country'); ... ... Country.AsString := 'Germany'; end; |
|
|
Daniel L. 
      
Beiträge: 140
Erhaltene Danke: 14
W7, W8
TurboD Prof, Delphi Community
|
Verfasst: Mi 24.11.10 16:18
@Jaenicke & Martok
Ähem...jetzt seh ich's auch schon 
|
|