2,497
社区成员
发帖
与我相关
我的任务
分享
create table SHOWBOM(code varchar(10),[name] varchar(50), endflag varchar(10),pid INT)
insert SHOWBOM select '1','酒水','false',1
union all select '101','白酒','false',2
union all select '102','啤酒','false',2
union all select'1010001','九江米酒','true',3
union all select'1010002','小糊涂酒','true',3
union all select'1020001','青鸟啤酒','true',3
/*
SELECT * FROM showbom
---结果:
1 酒水 false 1
101 白酒 false 2
102 啤酒 false 2
1010001 九江米酒 true 3
1010002 小糊涂酒 true 3
1020001 青鸟啤酒 true 3
*/
procedure TForm1.btn1Click(Sender: TObject);
var
List: TStringList;
Nodea,Node,nodec: TTreeNode;
Index: Integer;
i:Integer;
str:string;
begin
with qry1 do begin{--qry1是TADOQuery控件--}
Open;
if not IsEmpty then begin
TreeView1.Items.BeginUpdate;
TreeView1.Items.Clear;
List := TStringList.Create;
Nodea:=TreeView1.Items.AddFirst(nil,'展BOM');{最顶层大标题}
List.AddObject('展BOM',nodea);
while not eof do begin
i:=Length(Trim(FieldByName('code').AsString));
case i of
1:begin
Node := TreeView1.Items.AddChild(nodea,FieldByName('code').AsString+
FieldByName('name').AsString);
List.AddObject(FieldByName('code').AsString,node);
end;
3:begin
str:=FieldByName('code').AsString;
Index := List.IndexOf(Copy(str,1,1));
nodec := TreeView1.Items.AddChild(TTreeNode(List.Objects[Index]),
FieldByName('code').AsString+
FieldByName('name').AsString);
List.AddObject(str,nodec);
end;
else begin
str:=FieldByName('code').AsString;
Index := List.IndexOf(Copy(str,1,3));
nodec := TreeView1.Items.AddChild(TTreeNode(List.Objects[Index]),
FieldByName('code').AsString+
FieldByName('name').AsString);
List.AddObject(str,nodec);
end;
end;
next;
end;
TreeView1.Items.EndUpdate;
List.Free;
end;
end;
end;
procedure TRES_BOM_VIEW_F.CREATETREEVIEWMODEL;
var
iLoop:Integer;
Master,MasterNode:TTreeNode;
begin
adoq_getop.Close;
//SELECT distinct PARN_TYP FROM WWW where parn_typ<>'.' and parn_typ is not null order by PARN_TYP desc
adoq_getop.SQL.Text:='SELECT distinct PARN_TYP FROM WWW where parn_typ<>''.'' and parn_typ is not null order by PARN_TYP desc';
adoq_getop.Open;
adoq_getop.First;
cx_TV.Items.BeginUpdate;
cx_TV.Items.Clear;
Master:=cx_TV.Items.Add(nil,'昆盈BOM表檢視');
while not adoq_getop.Eof do
begin
if adoq_getop.FieldByName('PARN_TYP').AsString<>'' then
begin
Screen.Cursor:=crSQLWait;
MasterNode:=cx_TV.Items.AddChild(Master,VarToStr(adoq_getop.FieldValues['PARN_TYP']));
Application.ProcessMessages;
qry_op.Close;
qry_op.SQL.Text:='SELECT DISTINCT PARN_LITM FROM WWW WHERE PARN_TYP='''+ VarToStr(adoq_getop.FieldValues['PARN_TYP'])+''' GROUP BY PARN_LITM';
qry_op.Open;
for iLoop:=0 to qry_op.RecordCount -1 do
begin
cx_TV.Items.AddChild(MasterNode,VarToStr(qry_op.FieldValues['PARN_LITM']));
qry_op.Next;
end;
Application.ProcessMessages;
cx_TV.Items.EndUpdate;
Screen.Cursor:=crDefault;
end;
adoq_getop.Next;
Application.ProcessMessages;
end;
{
ThreadTView:=cx_TV;
ViewThread:=TExpandLH.Create;
ViewThread.Resume;
}
end;