Entwickler-Ecke
Datenbanken - Tabellen Zugriff über der Namen der TField Komponente
Daniel L. - Mi 24.11.10 13:43
Titel: Tabellen Zugriff über der Namen der TField Komponente
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 - Mi 24.11.10 13:49
Ich benutze einfach Konstanten für die Feldnamen. ;-)
Daniel L. - Mi 24.11.10 14:03
Danke - praktische Lösung!
Nur mal so aus Interesse, ginge auch der Weg über den TField Komponentnamen?
Martok - Mi 24.11.10 14:13
ClientDataSet1Vorname.AsString?
Das kann unmöglich deine Frage sein, was genau ist das wirkliche Problem? :mrgreen:
Daniel L. - 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 - 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. :gruebel:
Das meinte
Martok in seinem Post auch.
Ravy - 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. - Mi 24.11.10 16:18
@Jaenicke & Martok
Ähem...jetzt seh ich's auch schon :oops:
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!