Spaltennamen über Index (dBase) [gelöst]

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
and4more
Beiträge: 207
Registriert: Do 15. Nov 2012, 19:13
OS, Lazarus, FPC: Windows 10, Manjaro Linux, Lazarus 1.6.4 (32/64 Bit)
CPU-Target: 32 Bit / 64 Bit

Spaltennamen über Index (dBase) [gelöst]

Beitrag von and4more »

Hallo liebes Forum, habe folgendes Problem:
Ich möchte aus einer dBase-Datenbank die Namen der Spalten über deren numerischen Index auslesen, also etwa wie folgender Pseudocode:

Code: Alles auswählen

 
for i:=0 To DB.FieldCount-1 do begin
  StringList.Add(DB.FieldByIndex[i])   //soll den Spaltennamen über den Index angeben
 


...nur gibt es eine Funktion wie FieldByIndex leider nicht oder ich kann sie nur nicht finden. Weiß jemand eine Lösung?
Zuletzt geändert von and4more am So 23. Apr 2017, 18:42, insgesamt 1-mal geändert.
Lazarus 1.6.4 32-Bit + 64-Bit, Windows 10 64-Bit, Manjaro Linux 64-Bit

wp_xyz
Beiträge: 4869
Registriert: Fr 8. Apr 2011, 09:01

Re: Spaltennamen über Index (dBase)

Beitrag von wp_xyz »

Wenn bei dir DB ein TDataset-Abkömmling ist, also etwa TDbf, dann kannst du DB.Fields[i] aufrufen.

and4more
Beiträge: 207
Registriert: Do 15. Nov 2012, 19:13
OS, Lazarus, FPC: Windows 10, Manjaro Linux, Lazarus 1.6.4 (32/64 Bit)
CPU-Target: 32 Bit / 64 Bit

Re: Spaltennamen über Index (dBase)

Beitrag von and4more »

...funktioniert bei mir irgendwie anders als erhofft.
'SLSpaltenNamen.Add(DB.Fields[i])' zeigt mir bei leider als Fehlermeldung beim compilieren: 'Got "TField" , exspected "AnsiString",
Bei 'SLSpaltenNamen.Add(DB.Fields[i].Text)' und 'SLSpaltenNamen.Add(DB.Fields[i].AsString)' den Inhalt der Felder des ersten Datensatzes(?!?).
Ich hätte aber gerne die Bezeichnungen der einzelnen Spalten erhalten, also quasi die Spaltenüberschriften.

Sinn der ganzen Geschichte ist, eine Liste zu erstellen, die mir alle Spaltennamen sichert, um dann später entweder einzelne Spalten hinzuzufügen oder zu löschen, was dann in der Stringlist geschehen soll anhand derer dann die Datenbank neu erzeugt werden soll.
Lazarus 1.6.4 32-Bit + 64-Bit, Windows 10 64-Bit, Manjaro Linux 64-Bit

and4more
Beiträge: 207
Registriert: Do 15. Nov 2012, 19:13
OS, Lazarus, FPC: Windows 10, Manjaro Linux, Lazarus 1.6.4 (32/64 Bit)
CPU-Target: 32 Bit / 64 Bit

Re: Spaltennamen über Index (dBase)

Beitrag von and4more »

...hab's grade rausgefunden, richtig muss es heißen:

Code: Alles auswählen

 
SLSpaltenNamen.Add(DB.Fields[i].FieldName);
 


Vielen Dank für den "Schubs".
Lazarus 1.6.4 32-Bit + 64-Bit, Windows 10 64-Bit, Manjaro Linux 64-Bit

Antworten