Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Tabellenfelder dynamisch erzeugen (https://www.delphipraxis.net/169651-tabellenfelder-dynamisch-erzeugen.html)

Sugar 2. Aug 2012 13:21

Delphi-Version: 7

Tabellenfelder dynamisch erzeugen
 
Hallo,

ich muss eine Tabelle erzeugen und kann die Namen der Felder nicht zur Entwicklungszeit festlegen. Ich lese sie aus einer Textdatei aus und mit

Tab.FieldsDefinition.add('Feld' + inttostr(C + 1), ftString, StrToInt(Edit1.Text), false)

lege ich die Felder, in einer Schleife (C), in der Tabelle an.

Um darauf zugreifen zu können muss ich die Felder ja noch hinzufügen. Was zur Entwicklungszeit ja über den Feld-Editor geschieht. Aber egal wie ich es versuche, ich bekomme es nicht hin.

Wie kann ich die Felder zur Laufzeit dynmisch hinzufügen?

gruß
Sugar

mkinzler 2. Aug 2012 13:24

AW: Tabellenfelder dynamisch erzeugen
 
Fields.add() ?

p80286 2. Aug 2012 14:05

AW: Tabellenfelder dynamisch erzeugen
 
Was denn für eine Tabelle?
Excel? Datenbank? .....
Und warum diese Dynamische Namenszuweisung?

Gruß
K-H

Bummi 2. Aug 2012 14:20

AW: Tabellenfelder dynamisch erzeugen
 
Delphi-Quellcode:
      result.FieldDefs.Add(AFieldDefArray[I].Name, AFieldDefArray[I].DataType, AFieldDefArray[I].Size);
      Result.FieldDefs[Result.FieldDefs.Count-1].CreateField(Result,nil,AFieldDefArray[I].Name);
Die Frage dürfte aber sein für was für eine Dataset und warum und ob nur FieldDefs oder auch Fields benötigt werden (z.b. um Loopupfields für dynamsich erzeugte Clientdataset verwenden zu können).

Textdatei klingt als ob es am einfachsten mit ADO direkt öffnen könntest
Delphi-Quellcode:
ADOConnection1.ConnectionString := 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source="c:\" ;Extended Properties="text;HDR=NO;FMT=Delimited"';
ADOConnection1.Open;
ADODataSet1.LockType := ltReadOnly;
ADODataSet1.CommandType := cmdText;
ADODataSet1.CommandText := 'select * from Test.csv"';
ADODataSet1.Open;

EDIT: wenn das Format der Textdatei ungüstigt ist kann man sich mit einer schema.ini behelfen, ein Beispiel ist hier http://www.digital-inn.de/ms-access/...portieren.html zu finden ...

Sugar 2. Aug 2012 15:07

AW: Tabellenfelder dynamisch erzeugen
 
Dynamisch deswegen, weil unterschiedliche Dateistrukturen vorliegen und meine Appl. je nach Quelldaten einen Extrakt herausfiltern soll. Dazu muss dem Benutzer die Feldnamen und Feldanzahl angezeigt werden, die aus der Dateibeschreibung hervorgehen.

Ich benutze dazu ein MemDataset - also eine "Tabelle" die nur im Speicher existiert. Die Behandlung ähnelt der von Paradox Tabellen.

Fields.add funktioniert nicht...

Bummi 2. Aug 2012 15:33

AW: Tabellenfelder dynamisch erzeugen
 
>> #4
Zitat:

Result.FieldDefs[index].CreateField .....
wobei die Fielddefs an sich schon langen sollten ...

hoika 2. Aug 2012 15:53

AW: Tabellenfelder dynamisch erzeugen
 
Hallo,

hilft dieser Link vielleicht ?

http://www.delphitricks.com/source-c...t_runtime.html

Heiko


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:12 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz