我是这样创建表的,也不知对否. 请问如何实现如下的形式呢 可以无限级的增加删除,请指教
create table yp_type
(type_id nvarchar (20) NOT NULL ,
type_name nvarchar(100) not null,
parent_id int null-- 父ID
CONSTRAINT pk_yp_type_type_id PRIMARY KEY (type_id))
例如: 江西省
九江市
星子县
乐观镇
南昌市
新建县 广东省
深圳市
.
.
.
create table yp_type
(type_id nvarchar (20) NOT NULL ,
type_name nvarchar(100) not null,
parent_id int null-- 父ID
CONSTRAINT pk_yp_type_type_id PRIMARY KEY (type_id))
例如: 江西省
九江市
星子县
乐观镇
南昌市
新建县 广东省
深圳市
.
.
.
解决方案 »
- 总是弹出: 驱动器中没有磁盘,请在驱动器G中插入磁盘
- 看看这段代码,提示abstract error 错误,请教是什么原因?
- 两个SQL语句,可是我就是想不起来!请教,在线等!
- ServerSocket怎么样禁止CLientSocket的连入???(急急急)
- 谢谢卡子的大力帮助,给分喽!
- 做delphi的工程,怎么实现团队开发.
- 怎么可以让toolbar按钮的位图可以很大,imagelist的只能是很小的
- 谁能给我一个delphi下的关于进程和端口关联的源码或者文章?
- 请大家帮忙,很急想解决它,thanks!!!
- 怎么取得文件名?
- 请问各位如何可以获取文件名??
- delphi如何实现点击按钮 界面切换
id pid namepid就是上级id
字段
id pid name pid就是上级id
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[PlaceName]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [dbo].[PlaceName]
GOCREATE TABLE [dbo].[PlaceName] (
[Code] [varchar] (6) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[ShortName] [varchar] (2) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[Province] [varchar] (16) COLLATE Chinese_PRC_CI_AS NULL ,
[City] [varchar] (20) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[Place] [varchar] (30) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[Class] [varchar] (2) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[Postalcode] [varchar] (6) COLLATE Chinese_PRC_CI_AS NULL ,
[ZoneLetter] [varchar] (5) COLLATE Chinese_PRC_CI_AS NULL
) ON [PRIMARY]
GO
上面是以前搞过的一个全国地名库,如果想以树形式显示的话,最好加上ID和PID字段
002 002 湖南省
003 001001 九江市
004 001002 南昌市
005 003 广东省
006 003001 深圳市
007 003002 汕头市
008 003002001 XX县
009 003002001001 XXX镇
江西省
九江市
南昌市
湖南省
广东省
深圳市
汕头市
XX县
XXX镇怎么用treeview显示成如上所示的效果呢???
prv_id treeparent prv_name001 001 江西省
002 002 湖南省
003 001001 九江市
004 001002 南昌市
005 003 广东省
006 003001 深圳市
007 003002 汕头市
008 003002001 XX县
009 003002001001 XXX镇
江西省
九江市
南昌市
湖南省
广东省
深圳市
汕头市
XX县
XXX镇 怎么用treeview显示成如上所示的效果呢???
var
adoquery: TAdoquery;
temp: TTreeNode;
begin
adoquery := TAdoquery.Create(nil);
try
with adoquery do
begin
Connection := self.ADOConnection1;
close;
sql.Clear;
sql.Add('select * from list1 where lastbh = '''+aIndex+''' ');
open;
while not eof do
begin
temp := treeview1.Items.AddChild(atreenode,adoquery.FieldByName('cname').AsString);
SetTreeView(temp,adoquery.FieldByName('bh').AsString);
next;
end;
end;
finally
adoquery.Free;
end;
end;procedure TForm1.Button1Click(Sender: TObject);
begin
SetTreeView(nil,'0');
treeview1.FullExpand;
end;
const pTextFldName2:String='';const pDefFormat:String='333'):Integer;
const cMaxLevel = 10; // 最多级数
var
MyNode:array[0..cMaxLevel] of TTreeNode;
myLevel:array[1..cMaxLevel] of Byte;
viI,Level:Integer;
vsFormat,NowID,ShowTxt:String;
vbB:Boolean;
function GetLevel(sCode:String):Integer;
var vii,viLevel,viLen:Integer;
begin
viLevel := -1; //如果代码不符合标准,则返回-1
viLen := Length(sCode);
if viLen > 0 then
for viI := 1 to cMaxLevel do
if viLen <= mylevel[viI] then begin
vilevel := vii;
break;
end;
Result := viLevel;
end;
begin
Result := 0;
with pActiveDSet do
if Active then begin
vsFormat := pDefFormat; // 默认分级格式
First;
if Locate(pCodeFldName,'+1',[]) then begin
vsFormat := Trim(Fieldbyname(pTextFldName1).AsString);
Next;
end;
viI := strToIntDef(vsFormat,-1);
if viI < 0 then vsFormat := '333'; // 默认分级格式
fillchar(myLevel,sizeof(myLevel),0);
Level := 0;
for vii := 1 to Length(vsFormat) do begin
Level := Level + StrToInt(vsFormat[vii]);
if viI <= cMaxLevel then
myLevel[viI] := Level;
end;
ptv.Items.Clear;
// 以下是增加第一项
Level := 0;
if Length(pCaption) > 0 then begin
MyNode[0] := ptv.Items.Add(ptv.TopItem,pCaption);
// MyNode[0].ImageIndex := 0;
// MyNode[0].SelectedIndex := 0; // 处理图标
end
else
MyNode[0] := nil;
// 以上是增加第一项
vbB := Len(pTextFldName2) > 0; // 有否第二显示字段
While Not Eof do begin
NowID := Trim(FieldByName(pCodeFldName).AsString);
if vbB then
ShowTxt := Format('[%S]%S<%S>',[NowID,FieldByName(pTextFldName1).AsString,FieldByName(pTextFldName2).AsString])
else
ShowTxt := Format('[%S]%S',[NowID,FieldByName(pTextFldName1).AsString]);
Level := GetLevel(NowID); // 返回代码的级数
// 以下是增加子项
if Level > 0 then begin //确保代码符合标准
if Level = 1 then // 重新开始一个分类
for viI := 1 to cMaxLevel do MyNode[viI] := nil;
if (Level = 1) or (MyNode[Level-1] <> nil) then begin
MyNode[Level] := ptv.Items.AddChild(MyNode[Level-1],ShowTxt); // 以下用上一级节点为父节点添加子节点
// MyNode[Level].ImageIndex:=1;
// MyNode[Level].SelectedIndex:=2; // 处理图标
end;
end;
//以上是增加子项
Next;
End;
if MyNode[0] <> nil then
MyNode[0].Expand(False);//将首节点展开
end;
end;
2、如果数据量不大,建议用dataset的过滤,而不是用重复查询,内存操作,数据更快
3、tv.items.beginupdate,... .endupdate.http://www.delphibbs.com/delphibbs/dispq.asp?lid=1508737
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;
http://blog.csdn.net/myy/archive/2004/10/09/129886.aspx
http://117.21.247.37/cbx/AppSvr.dll/Demo.ao
这是基于CBX框架开发的SmartClient程序。
CBX RIA Demo(需要客户端初始化): http://117.21.247.37/cbx/AppSvr.dll/Splash.ao
有关CBX RIA的评论:http://www.firebird.net.cn/forum_view.asp?forum_id=2& view_id=2251
刚创建的CBX RIA讨论区
http://www.firebird.net.cn/forum_list.asp?forum_id=11
CBX RIA案例:
http://www.firebird.net.cn/forum_list.asp?forum_id=12CBX RIA QQ群
主讨论群:53623431(已满)
第二群:16169282(已满)
第三群:63756040
第四群:64740999
第五群:511572126CBX的作品: