2014-02-28 100 views
1

請幫助我動態地從SQL數據庫填充樹視圖。我是很新的德爾福如何從數據庫檢索數據並在delphi的Ttreeview中顯示

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; 
+0

你見過這些? http://users.iafrica.com/d/da/dart/zen/Articles/TTreeView/TTreeView_Main.html和http://delphi.about.com/b/2003/07/16/treeview-to-the- max.htm –

+0

你的過程有兩個步驟。第1步是從數據庫中檢索數據。你有你的SQL查詢嗎?你到目前爲止嘗試過什麼,失敗的是什麼?顯示一些代碼。 –

+0

@JanDoggen我已經將數據存儲到數據集「TTable」中,但是當我想要檢索並顯示在delphi窗體上時,它失敗了..我無法從TTable檢索數據..我的代碼沒有在那裏工作 – user3345195

回答

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; 
+0

「+1」如果在檢查一些條件後添加子節點,如'name1'=' name2'然後添加子節點..謝謝你的工作非常好.. – user3345195

+0

這實際上取決於子節點代表什麼和他們的數據來自哪裏相對於其他表。一個SQL數據集非常平坦,並不意味着要構建數據樹,因此您可能需要多個查詢或多個JOIN。 –

相關問題