Hallo, liebe Community,
ich hoffe, ich drücke mich mit meinem Anliegen verständlich aus.
Also ich habe ein dynamisches Array vom Typ TField, welches ich mit Ergebnissen aus einer
Query befüllen will, um diese später zu verarbeiten.
Das ist die
SQL-Abfrage:
Zitat:
SELECT * FROM Clients, NatalHoroscopes WHERE NatalHoroscopes.ID=Clients.NatalHoroscopeID;
Nach der Abfrage gehe ich jeden Datensatz durch und will diesen als Ergebnis zu einem TVirtualStringTree hinzufügen. Das mache ich so:
Delphi-Quellcode:
Nach der Abfrage:
if (RecordCount > 0) then
begin
First;
while not EOF do
begin
AddListNode (Fields);
Next;
end;
end;
Die Funktion AddListNode sieht wie folgt aus:
Delphi-Quellcode:
...
type
PClientListData = ^TClientListData;
TClientListData = Array of TField;
...
procedure TClientListForm.AddListNode (Fields: TFields);
var
a: Integer;
n: PVirtualNode;
d: PClientListData;
begin
n := ClientList.AddChild (nil);
d := ClientList.GetNodeData (n);
SetLength (d^, Fields.Count - 1);
for a := 0 to Fields.Count - 1 do
begin
d^[a] := TField.Create (Self);
d^[a].Assign (Fields[a]);
end;
end;
Allerdings erhalte ich NACH der Zeile "d^[a].Assign (Fields[a]);" eine
Exception:
Zitat:
Feld '' kann nicht als Typ Variant angesprochen werden
Fields enthält aber Werte, das habe ich schon z.B. über "ShowMessage (Fields[a].DisplayName)" geprüft.
Weiß jemand warum? Komme nicht dahinter.