如何取出两个表的树结构到treeview中???(100分)

  • 主题发起人 主题发起人 sdjxmikill
  • 开始时间 开始时间
S

sdjxmikill

Unregistered / Unconfirmed
GUEST, unregistred user!
建立了2个表:
master: autoid, fatherid,cname
detail: id , fatherid,cname
master表存储树结构,detail表存储客户的具体信息,处在节点的末梢。

请提供代码,或演示程序。感觉不禁 soft.com@qq.com
 
pid是父节点的ID,pnode是父节点。当用户点击节点时,动态读取所有子节点。你改一下sql语句就行了。
procedure TFrmFagui.ScanRecord(aPid: integer; PNode: TTreeNode);
var
i: Integer;
node: TTreeNode;
begin
//if list.Find(inttostr(apid),i) then exit;
PNode.DeleteChildren;
with dm.query do
begin
if active then close;
with sql do
begin
clear;
add('select * from tbFagui2 where pID=:p order by Index ASC');
end;
Parameters.ParamByName('p').Value := aPid;
Open;
First;
while not eof do
begin
node := treeview.Items.AddChild(PNode,
FieldByName('Title').AsString) ;
node.Data := Pointer(FieldByName('ID').AsInteger);
node.HasChildren := FieldByName('HasChild').AsBoolean;
node.ImageIndex := 0;
node.SelectedIndex := 2;
next;
end;
end;
//list.Add(inttostr(aPID));
end;

再贴一个别人写的快速创建树的方法
1、现在很多人都使用“父—子结构+递归算法”来显示树型的层次结构,但是不得不说这是一种非常拙劣的方式,下面给大家一种简单方便的数据结构和算法,快速显示树型的层次结构:
2、数据库结构
例如表“国家”可以是这样:
编号 名称
----------
01 中国
0101 吉林省
010101 长春市
010102 吉林市
0102 江苏省
010201 南京市
010202 常州市
02 美国
0201 密歇根州
020101 底特律市
0202 华盛顿州
020201 温哥华市
020202 西雅图市
03 澳大利亚
3、在 TreeView 中显示结构
procedure CreateTree;
const
ID_DEPT = 2;
var
nLevel: Integer;
pNodes: array[0..1023] of TTreeNode;
lpID, lpName: string;
begin
ADODataSet1.Close;
ADODataSet1.CommandText := 'SELECT * FROM [国家] ORDER BY [编号]';
ADODataSet1.Open;
pNodes[0] := nil;
TreeView1.Items.Clear;
with ADODataSet1.Recordset do
while not Eof do
begin
lpID := Fields['编号'].Value;
lpName := Fields['名称'].Value;
nLevel := Length(lpID) div ID_DEPT;
pNodes[nLevel] := TreeView1.Items.AddChild(pNodes[nLevel - 1], lpName);
MoveNext;
end;
end;
4、短短 20 行,一次读取数据。有人可能问为什么把 pNodes 的大小设成 1024?你也可以设成 10000,随你便,不过 TreeView 如果有那么多节点早死机了。
 
能否给出一次性读出所用树的代码?
to 无欲则刚 能否给提供一下演示代码
 
给点必要的数据,我可以帮你做。
 
to hhjjhhjj
master表: autoid, fatherid,cname
detail表: id , fatherid,cname,电话,住址,性别
master表存储树层次结构,detail表存储客户的具体信息,处在节点的末梢。
比如: master表
autoid fatherid cname
1 0 A有限公司
2 1 技术部
3 1 客服部
detail表
id fatherid cname 电话 住址 性别
1 2 小明 133143134 幸福小区 男
2 3 张伟 134445252 旺角 男

A有限公司
|—技术部
| |—小明
|
|—客服部
|—张伟

谢谢
 
给个邮件地址先
 
soft.com@qq.com
 
007vivi@163.com
 
http://user.qzone.qq.com/254930005
 
接受答案了.
 
后退
顶部