对treeview不熟悉,希望大家帮帮忙。
比如现在sql数据库内有两张表,第一张是省份列表,第二张是市列表。
省列表内有两个字段provid、provname,市列表内也有两个字段cityid、cityname。
现在我想用treeview把上边两张表联系起来做个省市的树型结构。
代码应该怎样写,提供思路方法也可以。
比如现在sql数据库内有两张表,第一张是省份列表,第二张是市列表。
省列表内有两个字段provid、provname,市列表内也有两个字段cityid、cityname。
现在我想用treeview把上边两张表联系起来做个省市的树型结构。
代码应该怎样写,提供思路方法也可以。
解决方案 »
- 我用delphi如何从mysql中读取一个枚举类型的字段的值呢??
- 有关MDI子窗体的问题?
- 如何确定串口是否已经打开?
- 有什么控件跟memo一样可以提取单行,设置行宽。而控件高度又能自动适应其中文字的高度(没有滚动条)。
- 问一个非常简单的问题:Delphi区分大小写吗?
- 应用程序的封面显示一会儿,怎不打开应用程序?
- 怎么使用线程实现对query的数据库查询
- 怎么用程序进行网络传输文件(不用Ftp)
- Delphi生成的文件是不是需要某些库的支持才能正确运行呢?急问,多谢
- 在delphi中有浏览目录的控件(包括能浏览网上邻居)
- 各位高手请指教,怎样在用webbrowser浏览网页之前判断本机已经接入因特网??
- 谁知道Delphi哪个控件可以编辑HTML,就象263油箱里面的选择HTML功能一样,
没说清楚
比如
省份列表内 广东的id是44
市列表内的 广州的id是4401
quer1:TQuery;
quer2:TQuery;
tmnode:Treenode;
begin
quer1:=TQuery.create(self);
quer2:=TQuery.create(self);
with quer1 do
begin
close;
sql.add('select provid、provname from 省表 ');
open;
while not quer1.eof do
begin
tmnode:=treeview1.Items.AddChild(nil,FieldByName('provname ').Asstring);
with quer2 do
begin
close;
sql.add(select cityname from 市表 where substring(cityid,1,2)=:nn);
parameters[0].vale=quer1.FieldByName('provid').value;
open;
while not quer2.eof do
begin
treeview1.Items.AddChild(tmnode,FieldByName('cityname').Asstring);
next;
end;
end;
end;
quer1.next;
end;
end;随手写的,未经调试,但意思很清楚了
后面那个 =:nn 是什么意思呢?
connection:=adoconnection1;
或者设置ConnectionString
它说我的这个exe raised exception class EDBEngineError with message 'Table does not exist.
File or directory does not exist.
然后是
路径\province.db //路径是这个project的路径,province是那个省表表名
路径\province.dbf
路径\province.txt
路径\province`. Porcess stopped. Use Step or Run to continue.是不是我没有指定好数据库或者数据源,所以它没找到啊?
但是在dataname那个属性里我找不到province所在的那个数据库啊
首先,你的数据库用的是什么?我是当作在SQL下面写的:
var
quer1:TADOQuery;//针对省表的查询,只查询一次;
quer2:TADOQuery;//针对市表的查询,次数为省表的记录数;
tmnode:Treenode;//依据省表记录生成的省的根节点;
begin
quer1:=TADOQuery.create(self);
quer2:=TADOQuery.create(self);
quer1.connection:=ADOCONNECTION1;//设置好ADOCONNECTION1的数据库连接;
quer2.connection:=ADOCONNECTION1
with quer1 do //针对省表进行循环;
begin
close;
sql.clear;//这句应该加上;
sql.add('select provid、provname from 省表 ');
open;
while not quer1.eof do //这里嵌套循环;
begin
tmnode:=treeview1.Items.AddChild(nil,FieldByName('provname ').Asstring);
with quer2 do
begin
close;
sql.clear;//这句应该加上;
sql.add(select cityname from 市表 where substring(cityid,1,2)=:nn);
parameters[0].vale=quer1.FieldByName('provid').value;
open;
while not quer2.eof do
begin
treeview1.Items.AddChild(tmnode,FieldByName('cityname').Asstring);
next;
end;
end;
end;
quer1.next;
end;
end;
右边的单引号加在哪啊?
不明白上边这句啊
///////////////////////////////
sql.add(select cityname from 市表 where
substring(cityid,1,2)//取cityid的前两位(从第“1”位开始,一次取“2”位)
=:nn);//冒号加标识符(:nn)表示参数后面有给参数赋值的语句:
parameters[0].vale=quer1.FieldByName('provid').value;//第一个参数赋值
可以改为:parameters.parameterbyname('nn').vale=quer1.FieldByName;
这样就清楚了吧。