如何从数据库中检索数据并在Delphi中的Ttreeview中显示 [英] How to retrieve data from database and display in Ttreeview in delphi

查看:184
本文介绍了如何从数据库中检索数据并在Delphi中的Ttreeview中显示的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

请帮助我从SQL数据库中动态填充树视图。我非常新的delphi





,欢迎逐步处理。我有两种表格格式,如下图所示,我想从数据库中填充树视图。我在其他资源网站上搜索,但没有找到解决方案我正在寻找。



我被卡住了请帮助我们...
提前许多感谢。

  procedure TForm1.Button1Click(Sender:TObject ); 
var
// node:TTreeList;
i:整数;
MyTreeNode1,MyTreeNode2:TTreeNode;
开始
与TreeList1.Items做
开始
清除;
MyTreeNode1:= Add(nil,'Table');
ADOTable1.First;
而ADOTable1 do
begin
AddChild(MyTreeNode1,'B');
AddChild(MyTreeNode1,'c');
下一个;
结束
结束
结束


解决方案

切换到 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;
而不是ADOQuery1.Eof do
begin
RecordDeptID:= ADOQuery1.FieldByName('DeptID')。AsInteger;
if(DeptNode = nil)或(RecordDeptID CurrentDeptID)then
begin
DeptNode:= TreeList1.Items.AddChild(RootNode,ADOQuery1.FieldByName('Dept')。AsString );
CurrentDeptID:= RecordDeptID;
结束
TreeList1.Items.AddChild(DeptNode,ADOQuery1.FieldByName('Name')。AsString);
ADOQuery1.Next;
结束
finally
ADOQuery1.Close;
结束
结束


Please help me to populate a tree view from SQL database dynamically. I am very new to delphi

and step by step processes are welcome. I have two table formats given in the picture below and i want to fill the tree view from database accordingly. I searched on other resource sites also but didn't find the solution what i am looking for.

I am stuck. Please help me guys.... Many many thanks in advance.

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;

解决方案

Switch to TADOQuery and then try something like this:

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;

这篇关于如何从数据库中检索数据并在Delphi中的Ttreeview中显示的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆