Показать сообщение отдельно
  #13  
Старый 01.03.2012, 10:36
vivazz vivazz вне форума
Прохожий
 
Регистрация: 05.05.2011
Сообщения: 14
Репутация: 10
По умолчанию

Вообще я собираюсь сделать так:
Факультет ВМ
-----Группа 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;
Первый факультет заполняет нормально, получаю:
Факультет ВМ
---остальные факультеты (ВМ, СК, ЭЭ)
Факультет СК
пусто
Факультет ЭЭ
пусто
Ответить с цитированием