Вообще я собираюсь сделать так:
Факультет ВМ
-----Группа 1
--------Студент 1
--------Студент 2
-----группа 2
--------Студент 1
Факультет СК
-----Группа 1
--------Студент 1
--------Студент 2
-----группа 2
--------Студент 1
Но пока хотя бы на таблице факультеты эту задумку реализовать )
Сделал вот так:
Код:
TreeView1.Items.Clear;
with dm1.q do
begin
Active:=false;
SQL.Clear;
SQL.Add('SELECT * FROM FACULTET ORDER BY COD_FACULTETA');
Active:=true;
First;
while not Eof do
begin
TreeView1.Items.Add(nil, FieldByName('NAME_FACULTETA').AsString);// тут обращение к бд работает
with dm1 do
begin
q2.Active:=false;
q2.SQl.Clear;
q2.SQL.Add('SELECT * FROM FACULTET WHERE NAME_FACULTETA=:Facultet');
q2.SQL.Add('ORDER BY COD_FACULTETA');
q2.Params.ParamByName('Facultet').asString := FieldByName('NAME_FACULTETA').AsString;
q2.Active:=true;
q2.First;
k:=0;
while (not dm1.q2.Eof) do //бесконечность получается...
begin
TreeView1.Items.AddChildObject(TreeView1.Items.Item[k],
dm1.q2.FieldByName('NAME_FACULTETA').AsString, Pointer(
dm1.q2.FieldByName('COD_FACULTETA').AsInteger)); //(это для примера опять идут факультеты, т.к. ничего в бд не заполнено)
inc(k);
dm1.q2.Next;
end;
i:=i+k+1;
Next;
end;
Первый факультет заполняет нормально, получаю:
Факультет ВМ
---остальные факультеты (ВМ, СК, ЭЭ)
Факультет СК
пусто
Факультет ЭЭ
пусто