Ještě mne napadlo: kterou verzi Delphi máš?
Viď avatara - XE7. Pripájam sa k lokálnej - v tom určite nie je problém.
Tak to upresním, keď už idete po chybe.
Chybu navodím vždy rovnakým spôsobom a na jedinom mieste.
V jednom VirtulaStringTree v OnChange napĺňam iný. Pokiaľ ten druhý jediný raz naplním, tak potom už mám problém v kuse. Ak ostáva prázdny je všetko v poriadku. To je jediná istota čo mám.
Neviem sa dopátrať na čom to padá. Nespráva sa to rovnako. Raz to je FireDAC, inokedy VST a ešte neviem čo.
Všade využívam rutiny z predkov (OOP). Na iných miestach, aj v iných programoch, mi to problém nerobí.
procedure TMeter.FillVst;
begin
FVstStoredProc.Close;
FVstStoredProc.ParamByName('Fkflats').Value := FHotDBBasic.DBBasic.PrimaryKey;
inherited;
end;
procedure TVstTable.FillVst; // Inherited;
var
Node: PVirtualNode;
VSTDataSet: TDataSet;
I: Integer;
begin
if Assigned(FVstStoredProc) then
begin
FVstStoredProc.Open();
VSTDataSet := FVstStoredProc;
if FqryFieldList.Count > 0 then
FqryFieldList.Clear;
for I := 0 to Pred(FVstStoredProc.FieldCount) do
FqryFieldList.Add(FVstStoredProc.FieldList.Fields[I]);
end
else
if Assigned(FVstQuery) then
begin
FVstQuery.Open();
VSTDataSet := FVstQuery;
if FqryFieldList.Count > 0 then
FqryFieldList.Clear;
for I := 0 to Pred(FVstQuery.FieldCount) do
FqryFieldList.Add(FVstQuery.FieldList.Fields[I]);
end
else
VSTDataSet := FHotDBBasic.DBBasic.Dataset;
StartFillVst;
VSTDataSet.First;
if VSTDataSet.Eof then
begin
FinallyFillVst;
end
else
begin
try
while not VSTDataSet.Eof do
begin
Node := FVst.AddChild(nil);
FillNodeDataQry(Node);
VSTDataSet.Next;
end;
finally
FinallyFillVst;
SortVST;
End;
end;
end;