dTemp的內容是這樣的
fathergoods fathergoodsname childgoods childgoodsname number childtype
ABC abcname A01 a01name 1 半成品
ABC abcname B01 b01name 1 半成品
ABC abcname C01 c01name 1 半成品
A01 a01name D01 d01name 1 原材料Procedure Tf_main.CodeRecursion(parent:Ttreenode;GoodsCode:String);
var
Dataset:TADOquery;
Node:Ttreenode;
begin
dTemp.Filtered:=False;
dTemp.Filter:='FatherGoods='+QuotedStr(GoodsCode);
dTemp.Filtered:=True;
if dTemp.RecordCount=0 then exit;
DataSet:=TADOquery.Create(Application);
Dataset.Clone(dTemp);
Dataset.First;
while not Dataset.Eof do begin
Node:=Treeview1.Items.Add(Parent,
Dataset.fieldbyname('ChildGoodsName').AsString);
if (Dataset.FieldByName('childtype').AsString='半成品') then
CodeRecursion(Node,Dataset.fieldByName('ChildGoods').AsString);
Dataset.Next;
end; //while
Dataset.Free;
end;要按照dtemp的內容﹐寫到treeview1呀﹐現在出現死循環啦
fathergoods fathergoodsname childgoods childgoodsname number childtype
ABC abcname A01 a01name 1 半成品
ABC abcname B01 b01name 1 半成品
ABC abcname C01 c01name 1 半成品
A01 a01name D01 d01name 1 原材料Procedure Tf_main.CodeRecursion(parent:Ttreenode;GoodsCode:String);
var
Dataset:TADOquery;
Node:Ttreenode;
begin
dTemp.Filtered:=False;
dTemp.Filter:='FatherGoods='+QuotedStr(GoodsCode);
dTemp.Filtered:=True;
if dTemp.RecordCount=0 then exit;
DataSet:=TADOquery.Create(Application);
Dataset.Clone(dTemp);
Dataset.First;
while not Dataset.Eof do begin
Node:=Treeview1.Items.Add(Parent,
Dataset.fieldbyname('ChildGoodsName').AsString);
if (Dataset.FieldByName('childtype').AsString='半成品') then
CodeRecursion(Node,Dataset.fieldByName('ChildGoods').AsString);
Dataset.Next;
end; //while
Dataset.Free;
end;要按照dtemp的內容﹐寫到treeview1呀﹐現在出現死循環啦
造成数据冗余太多,应该整理一下
比如设置称:
childgoods childgoodsname number childtype fathergoods
就可以了