delphi 中如何从数据库中读取数据自生成TreeView,只有两个字段,数据库结构如下。急急!!

我的数据库结构如下:
UnitId      UnitName
01          中国 (根节点)
0101        河北省(二级树)
010101      河北省沧州市(三级树)
01010101    河北省沧州市沧县(四级树)
0102        北京市(二级树)
010201      北京市海淀区(三级树)
01020101    北京市海淀区唐家岭村(四级树)
01020102    北京市海淀区小牛房村(四级树)
010202      北京市朝阳区(三级树)
01020201    北京市朝阳区奥运村(四级树)
0103        天津市(二级树)
010301      天津市大港区(三级树)
01030101    天津市大港区某地 (四级树)

需要这样进行判断
当Unitid的长度为4生成二级树
当Unitid的长度为6并且前4位与Unitid的长度为4数值相等生成三级树
当Unitid的长度为8并且前6位与Unitid的长度为6数值相等生成四级树

小弟是新手,不知道该如何循环实现。请大家帮忙。谢谢!!!

procedure CreateTree;
const
  ID_DEPT = 2;
var
  nLevel: Integer;
  pNodes: array[0..1023] of TTreeNode;
  lpID, lpName: string;
begin
  ADODataSet1.Close;
  ADODataSet1.CommandText := 'SELECT * FROM [国家] ORDER BY [编号]';
  ADODataSet1.Open;
  pNodes[0] := nil;
  TreeView1.Items.Clear;
  with ADODataSet1.Recordset do
    while not Eof do
    begin
      lpID := Fields['编号'].Value;
      lpName := Fields['名称'].Value;
      nLevel := Length(lpID) div ID_DEPT;
      pNodes[nLevel] := TreeView1.Items.AddChild(pNodes[nLevel - 1], lpName);
      MoveNext;
    end;
end;

猜你喜欢

转载自www.cnblogs.com/jijm123/p/11374010.html