下面是我写的点父结点出来的所有2级的,问题是:我怎么判断点3级结点的?4级的,未知级的?我现在不会给写在一起,就会一个一个写,这样不行啊
procedure TPrintOut.DataTreeList1Click(Sender: TObject);
var
FilterStr,lStuffType: string;
begin
if not Dsb_data.DataSet.Active then
Dsb_Data.DataSet.Open;
if Dsb_Data.DataSet.FieldByName('pid').IsNull then //树的父结点
begin
Dsb_Data.DataSet.First;
while not Dsb_Data.DataSet.Eof do
begin
lStuffType := Business.System.StringUtils.Copy(Dsb_Data.DataSet.FieldByName('StuffType').AsString,1,9); //2级结点
FilterStr := 'SubstanceType=''%s''';
TSQLDataSet(DSB_Detail.Dataset).SQLFilter := SysUtils.Format(FilterStr,[lStuffType]);
TSQLDataSet(DSB_Detail.DataSet).SQLFiltered := True;
TSQLDataSet(DSB_Detail.DataSet).Open;
if not ZDYSJJ.DataSet.Active then //自定义数据集
ZDYSJJ.DataSet.Open;
with ZDYSJJ.DataSet do
begin
if not Locate('YHZD1',Dsb_Detail.DataSet.FieldByName('SERIALNUM').AsString,[]) then
begin
Append;
FieldByName('YHZD1').AsString :=
Dsb_Detail.DataSet.FieldByName('SERIALNUM').AsString;
FieldByName('YHZD2').AsString :=
Dsb_Detail.DataSet.FieldByName('SubstanceType').AsString;
FieldByName('YHZD3').AsString :=
Dsb_Detail.DataSet.FieldByName('TotalNum').AsString;
FieldByName('YHZD4').AsString :=
Dsb_Detail.DataSet.FieldByName('TotalMoney').AsString;
Post;
end;
end;
Dsb_Data.DataSet.Next;
end;
end;
if ZDYSJJ.DataSet.UpdatesPending then
ZDYSJJ.DataSet.ApplyUpdates;
end; |