Zitat von
Frederika:
... Wobei man scheinbar die Feldnamen irgendwoher wissen muß? ...
Ja und Nein
Du bekommst über TADOQuery auch die Feldnamen mitgeteilt, wissen musst du allerdings, was der Feldname bzw. das Feld/der Feldinhalt bedeuten soll
Mit dieser Funktion bekommst Du alle Feldnamen einer übergebenen Datenmenge geliefert. Als Parameter übergibst Du einfach Deine TADOQuery. Stör Dich nicht daran, dass Deine Abfrage ja gar nicht vom Typ TDataSet ist, diese wird aber davon abgeleitet und daher funktioniert das (
OOP sei Dank).
Delphi-Quellcode:
// Akzeptiert als Parameter auch alles, was ein Nachfahr von TDataSet ist
// Beispiel-Aufruf:
// ShowMessage( ListFieldNames( ADOQuery1 ) );
function ListFieldNames( DataSet : TDataSet ) : string;
var
FieldIndex : Integer;
begin
Result := '';
if
DataSet.Active
then // nur wenn die Datenmenge geöffnet ist!
// Wir lesen jetzt mal alle vorhandenen Felder der Reihe nach aus
for
FieldIndex := 0 to DataSet.FieldCount - 1
do
begin
// Ist nur für die Kosmetik
if
( FieldIndex > 0 )
then
Result := Result + ';';
// Hier passiert es jetzt
Result :=
Result +
DataSet.Fields.FieldByNumber( FieldIndex ).FieldName; // <-- Da wird der Feldname geholt
end;
end;
Zitat von
Frederika:
... Für mein Projekt muß ich einfach nur die Ergebnisdatenmenge komplett in eigene Objektstrukturen umwandeln. Ich greife wohl also zeilenweise einfach auf alle Datensätze zu (Deine while-Schleife) und erzeuge dabei eigene Objekte, die ich dann wieder wie gewohnt handhaben kann. Schnell ans rettende Ufer sozusagen...
So hatte ich Dich in dem anderen Thread (
ODBC und SP) auch verstanden
Zitat von
Frederika:
Danke!
you're welcome
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ea 0a 4c 14 0d b6 3a a4 c1 c5 b9
dc 90 9d f0 e9 de 13 da 60)