用treeview显示数据库的问题(200)这个问题我想很普遍(200分)

  • 主题发起人 主题发起人 flyleaf88
  • 开始时间 开始时间
F

flyleaf88

Unregistered / Unconfirmed
GUEST, unregistred user!
我现在给材料编号编码,分大类中类小类,用treeview显示数据比较合适,
但修改和删除比较难,还有转移功能,谁有合适的例程?
数据库结构是:(大类表)大类编号 大类名称 如(01 金属)
(中类表)大类编号 中类编号 中类名称 如(01 01 铁丝)
(小类表)大类编号 中类编号 小类编号 小类名称(01 01 01 铁丝 0.25)
要求完成的树结构可以显示,修改,删除任一结点上的数据,如果是同类树的话可以
转移
 
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, DB, ADODB, ComCtrls;

type
TForm1 = class(TForm)
TreeView1: TTreeView;
adoDBLink: TADOConnection;
qryGetData: TADOQuery;
procedure TreeView1Expanded(Sender: TObject; Node: TTreeNode);
procedure TreeView1Edited(Sender: TObject; Node: TTreeNode;
var S: String);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.TreeView1Expanded(Sender: TObject; Node: TTreeNode);
var
CurTreeNode:TTreeNode; //当前节点
strDLBH:AnsiString; //得到当前设备的一级分类名称
strZLBH:AnsiString; //得到当前设备的二级分类名称
strXLBH:AnsiString; //得到当前设备的主辅设备的标志
strSQL:AnsiString; //带查询条件的查询语句;
begin
//当前树节点展开的时候做相应的处理
if(Node.Expanded=false) then
Exit;
case Node.Level of
0:
begin
Node.DeleteChildren;
strSQL:='select dlbh from dlb';
if(qryGetData.Active=true) then
qryGetData.Active:=false;
qryGetData.SQL.Clear;
qryGetData.SQL.Add(strSQL);
qryGetData.Active:=true;
while not (qryGetData.Eof) do
begin
curTreeNode:=TreeView1.Items.AddChild(Node,qryGetData.Fields.Fields[0].AsString);
TreeView1.Items.AddChild(curTreeNode,'');
qryGetData.Next;
end;
qryGetData.Active:=false;
end;
1:
begin
Node.DeleteChildren;
strDLBH:=Node.Text;
strSQL:='select zlbh from zlb where dlbh='''+strDLBH+'''';
if(qryGetData.Active=true) then
qryGetData.Active:=false;
qryGetData.SQL.Clear;
qryGetData.SQL.Add(strSQL);
qryGetData.Active:=true;
while not (qryGetData.Eof) do
begin
curTreeNode:=TreeView1.Items.AddChild(Node,qryGetData.Fields.Fields[0].AsString);
TreeView1.Items.AddChild(curTreeNode,'');
qryGetData.Next;
end;
qryGetData.Active:=false;
end;
2:
begin
Node.DeleteChildren;
strDLBH:=Node.Parent.Text;
strZLBH:=Node.Text;
strSQL:='select xlbh from xlb where dlbh='''+strDLBH+'''';
strSQL:=strSQL+' and zlbh='''+strZLBH+'''';
if(qryGetData.Active=true) then
qryGetData.Active:=false;
qryGetData.SQL.Clear;
qryGetData.SQL.Add(strSQL);
qryGetData.Active:=true;
while not (qryGetData.Eof) do
begin
curTreeNode:=TreeView1.Items.AddChild(Node,qryGetData.Fields.Fields[0].AsString);
qryGetData.Next;
end;
qryGetData.Active:=false;
end;
end;
Node.Expanded:=true;
end;

procedure TForm1.TreeView1Edited(Sender: TObject; Node: TTreeNode;
var S: String);
var
strSQL:AnsiString;
begin
case Node.Level of
1:
begin
strSQL:='update xlb set zlbh='''+S+''''+' where dlbh='''+
Node.Text+'''';
if(qryGetData.Active=true) then
qryGetData.Active:=false;
qryGetData.SQL.Clear;
qryGetData.SQL.Add(strSQL);
qryGetData.Active:=true;
strSQL:='update zlb set dlbh='''+S+''''+' where dlbh='''+
Node.Text+'''';
if(qryGetData.Active=true) then
qryGetData.Active:=false;
qryGetData.SQL.Clear;
qryGetData.SQL.Add(strSQL);
qryGetData.Active:=true;
strSQL:='update dlb set dlbh='''+S+''''+' where dlbh='''+
Node.Text+'''';
if(qryGetData.Active=true) then
qryGetData.Active:=false;
qryGetData.SQL.Clear;
qryGetData.SQL.Add(strSQL);
qryGetData.Active:=true;
end;
2:
begin
strSQL:='update xlb set zlbh='''+S+''''+' where zlbh='''+
Node.Text+'''';
if(qryGetData.Active=true) then
qryGetData.Active:=false;
qryGetData.SQL.Clear;
qryGetData.SQL.Add(strSQL);
qryGetData.Active:=true;
strSQL:='update zlb set zlbh='''+S+''''+' where zlbh='''+
Node.Text+'''';
if(qryGetData.Active=true) then
qryGetData.Active:=false;
qryGetData.SQL.Clear;
qryGetData.SQL.Add(strSQL);
qryGetData.Active:=true;
end;
3:
begin
strSQL:='update xlb set xlbh='''+S+''''+' where xlbh='''+
Node.Text+'''';
if(qryGetData.Active=true) then
qryGetData.Active:=false;
qryGetData.SQL.Clear;
qryGetData.SQL.Add(strSQL);
qryGetData.Active:=true;
end;
end;
end;

end.
 
在TreeView1中至少要有2层(刚开始的时候)(设计阶段)
 
建议你下载dbtreeview控件。
 
使用 dbtreeview 控件吧,简单
 
我想编码表是一个还是三个?
 
:WebExplorer,
麻烦你把你用的数据库结构贴出来
 
后退
顶部