数视图的疑惑(100分)

  • 主题发起人 主题发起人 stiven
  • 开始时间 开始时间
S

stiven

Unregistered / Unconfirmed
GUEST, unregistred user!
本人最近作一个数据库的开发,想把中国所有的直辖市,省,市,县放到一个数视图中。本人有国家
作了一个数据表,可有三千个记录,如想建立这个数视图,速度很慢。想请高手指教怎么快速建立这个数视图,
小弟感激不尽。
 
3000 个记录,很一般啊
 
怎么实现呀!从数据库里调很慢呀!有什么快一点的办法吗?不过,不能离开数据库。
 
3000个记录确实不算多。数视图是什么意思,详细一点
 
用TTreeView这个控件实现,望高人指教,小弟十万火急。
 
以前曾讨论过,你注意在客户点击节点时再动态的生成子项就可以提高效率了.
 
能否给出源码
 
你查查以前的问题吧
 
to stiven:
给你参考一下,我下面是处理N层目录结构
(( 书类型表(Slxtable)
1.本级编码(Bjbm) char(4)
2.类型名称(Lxmc) char(60)
3.编码级别(Bmjb) char(1)
4.类型总编码(Lxzbm) char(10) //上级+本级))
用建树过程如下:
procedure createtree(treeview1:Ttreeview);
var
stra,strb,strc,strd:string;
i,j,index1,dd:integer;
begin
treeview1.Items.Clear;
treeview1.items.add(nil,'内容性质类型');
xzrec[0].zbm:='$';
with tsg_dm do
begin
query1.Close;
query1.SQL.clear;
query1.sql.add('select Bjbm,Lxmc,Bmjb,Lxzbm from Slxtable order by Lxzbm');
query1.Prepare;
query1.Open;
query1.First;
while not query1.Eof do
begin
stra:=query1.fieldbyname('Bjbm').asstring;
strb:=query1.fieldbyname('Lxmc').asstring;
strc:=query1.fieldbyname('Bmjb').asstring;
strd:=query1.fieldbyname('Lxzbm').asstring;
j:=treeview1.items.count;
index1:=-100;
for i:=0 to j-1 do
begin
dd:=length(xzrec.zbm);
if (copy(strd,1,dd)=xzrec.zbm)and(strc=inttostr(treeview1.items.level+1)) then
index1:=i;
end;
if index1=-100 then//实际上做了100层
treeview1.Items.AddChild(treeview1.Items[0],strb)
else
treeview1.Items.AddChild(treeview1.Items[index1],strb);
xzrec[j].zbm:=strd;
xzrec[j].bjbm:=stra;
query1.Next;
end; //while not ... do
end;
end;
procedure tform1.FormCreate(Sender: TObject);
begin
createtree(treeview1);//建树
end;
你可以把你的数据库改掉;
给你点提示:
地区性质表(Dqxztable)
1.本级编码(Bjbm) char(3) 0 32 07 01
2.类型名称(Lxmc) char(20) 中国 福建省 龙岩市 永定县
3.编码级别(Bmjb) char(10) 1 2 3 4
4.类型总编码(Lxzbm) char(20)//上级+本级 0 032 03207 0320701

 
很感谢大家的回答,可我的数据库的建立,所有的地名是根据身份证号码的前六位来建的。
 
zqs10597249你这么做速度快吗?
 
to stiven:
在C/S模式下没有什么问题的
 
接受答案了.
 
后退
顶部