有表(tabel)如下:
----------------------------
id | up_id | corp_name|
----------------------------
1 | 0 | 一級目錄1 |
2 | 0 | 一級目錄2 |
3 | 1 | 二級目錄1 |
4 | 3 | 三級目錄1 |
5 | 0 | 一級目錄3 |
6 | 5 | 二級目錄2 |
7 | 4 | 四級目錄2 |
8 | 3 | 三級目錄2 |
........如何一次性轉成如下目錄樹
|-一級目錄1--二級目錄1--三級目錄1--四級目錄
| |-三級目錄2
|-一級目錄2
|
|-一級目錄3--二級目錄2
..........
就是能不能用一個遞歸來完成數據庫到樹的轉換
要求轉為TREEVIEW
----------------------------
id | up_id | corp_name|
----------------------------
1 | 0 | 一級目錄1 |
2 | 0 | 一級目錄2 |
3 | 1 | 二級目錄1 |
4 | 3 | 三級目錄1 |
5 | 0 | 一級目錄3 |
6 | 5 | 二級目錄2 |
7 | 4 | 四級目錄2 |
8 | 3 | 三級目錄2 |
........如何一次性轉成如下目錄樹
|-一級目錄1--二級目錄1--三級目錄1--四級目錄
| |-三級目錄2
|-一級目錄2
|
|-一級目錄3--二級目錄2
..........
就是能不能用一個遞歸來完成數據庫到樹的轉換
要求轉為TREEVIEW
解决方案 »
- 怎样让用delphi7 开发的代码自动排列成无序?
- delphi背景图片问题
- delphi 里如何实现 VC++ 的 memcpy()函数的功能,把 FE 7F 09 40 转换成 float 型2.17
- 有没有一起创业的
- "属性" 读写流程
- 请教一下这个CASE语句的问题
- 编activeX控件时,想增加一个属性,用 published property biaoti:string read get_biaoti write set_biaoti;,却报错!
- 想用qreport做一个关联数据库的图形(x,y轴显示的那种)?
- 这段程序不太理解,麻烦大家帮着解释一下
- 怎样写自动编号
- 统计字符串中某字符的出现次数
- 大家看看这个sql语句错在哪里?
代碼如下
===========
unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, DB, Grids, DBGrids, ADODB, ComCtrls;type
pmyid = ^Tpmyid;
Tpmyid = record
nodeid: string;
nodename: string;
end;
TFrmMain = class(TForm)
TreeView1: TTreeView;
AdoCon: TADOConnection;
ADOTable1: TADOTable;
DBGrid1: TDBGrid;
DataSource1: TDataSource;
procedure FormShow(Sender: TObject);
private
{ Private declarations }
procedure ReadNode(ownNode: TTreeNode; NodeId: string);
procedure LoadData;
public
{ Public declarations }
end;var
FrmMain: TFrmMain;implementation{$R *.dfm}
//ReadChileTreeprocedure TfrmMain.ReadNode(ownNode: TTreeNode; NodeId: string);
//OwnNode:Pater node NodeId:self nodeid;
var
curNode: TtreeNode;
curID, curName: string;
adoquery: TAdoQuery;
myid: pmyid;
begin
adoquery := Tadoquery.create(parent);
adoquery.Connection := AdoCon;
adoquery.sql.text := 'select * from tree1 where up_id=''' + NodeID + '''';
with adoquery do
begin
open;
first;
while not eof do
begin
curID := FieldByName('id').AsString;
curName := fieldByName('Crop_name').AsString;
new(myid);
myid^.nodeid := curID;
myid^.nodename := curName;
curNode := treeview1.Items.AddChildObject(ownNode, curName, myid);
ReadNode(curNode, curid);
next;
end;
close;
free;
end;
end;
procedure TfrmMain.LoadData;
var
CurNode:TTreeNode;
MyID:pMyID;
begin
new(MyID);
MyID^.nodeid:='0'; //'0' is rootnode nodeid
CurNode:=Treeview1.Items.AddChildObject(nil,'¤½¥q',MyID);
ReadNode(CurNode,'0');
end;
procedure TFrmMain.FormShow(Sender: TObject);
begin
loaddata;
end;end.===================