如何从数据库中检索数据并在delphi中的Ttreeview中显示

时间:2014-02-28 09:39:44

标签: delphi treeview delphi-7

请帮我动态填充SQL数据库中的树视图。我是delphi的新手

enter image description here

欢迎一步一步的流程。我有两种表格格式,如下图所示,我想相应地填充数据库中的树视图。我也搜索了其他资源网站,但没有找到解决方案,我正在寻找。

我被困住了。请帮帮我们.... 很多人都提前感谢。

procedure TForm1.Button1Click(Sender: TObject);
var
  // node : TTreeList;
  i: Integer;
  MyTreeNode1,MyTreeNode2 : TTreeNode;
begin
   with TreeList1.Items do
   begin
        Clear;
        MyTreeNode1 := Add(nil, 'Table');
        ADOTable1.First;
        while ADOTable1 do
        begin
            AddChild(MyTreeNode1,'B') ;
            AddChild(MyTreeNode1,'c');
            Next;
        end;
   end;
end;

1 个答案:

答案 0 :(得分:3)

切换到TADOQuery然后尝试这样的事情:

procedure TForm1.Button1Click(Sender: TObject);
var
  CurrentDeptID, RecordDeptID: Integer;
  RootNode, DeptNode: TTreeNode;
begin
  CurrentDeptID := 0;
  TreeList1.Items.Clear;
  RootNode := TreeList1.Items.Add(nil, 'Departments');
  DeptNode := nil;
  ADOQuery1.SQL.Text := 'SELECT sd.DeptID, sd.Name, d.Dept FROM SubDepartments sd INNER JOIN Departments d ON (sd.DeptID = d.DeptID) ORDER BY d.Dept, sd.Name';
  ADOQuery1.Open;
  try
    ADOQuery1.First;
    while not ADOQuery1.Eof do
    begin
      RecordDeptID := ADOQuery1.FieldByName('DeptID').AsInteger;
      if (DeptNode = nil) or (RecordDeptID <> CurrentDeptID) then
      begin
        DeptNode := TreeList1.Items.AddChild(RootNode, ADOQuery1.FieldByName('Dept').AsString);
        CurrentDeptID := RecordDeptID;
      end;
      TreeList1.Items.AddChild(DeptNode, ADOQuery1.FieldByName('Name').AsString);
      ADOQuery1.Next;
    end;
  finally
    ADOQuery1.Close;
  end;
end;
相关问题