这样的treeview如何设计数据库的表?

xjhwc 2015-10-07 11:52:51

这个treeview是我手动生成的,不是程序实现的。方法1:把地区表和项目表合并成一个表,增加完地区后,在每个地区上重复增加项目名称(计算机、路由器等)。方法2:把地区表和项目表分开,通过视图 或者存储过程联合查询得到TREEVIEW的数据源。方法1的好处是SQL语句好组织,缺点是要重复输入项目名称,地区和项目后期是会慢慢增加的。方法2的好处是项目名称输入一次,缺点是生成TREEVIEW的数据源的SQL语句不好组织。 哪个方法好点?
...全文
158 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
xjq2003 2015-10-09
  • 打赏
  • 举报
回复
数据库 字段设置为:省,区,县,设备 ,id 这些字段就差不多了
xjq2003 2015-10-09
  • 打赏
  • 举报
回复
供你参考

void __fastcall TMapFrm::TreeView1Init()
{
try
{
TTreeNode *Root,*Node1,*Node2;
AnsiString TempStr,SQLStr;
TreeView1->Items->Clear();
Root=TreeView1->Items->AddChild(NULL,"全国高速公路网");
Root->SelectedIndex=0;
//Root->Selected=true;
DataMod->ProvinceADOQ->Close();
SQLStr="Select * from ProvinceTable Where DeviceNum>0 Order by ProvinceID";
DataMod->ProvinceADOQ->SQL->Text=SQLStr;
DataMod->ProvinceADOQ->Open();
DataMod->ProvinceADOQ->First();
while(!DataMod->ProvinceADOQ->Eof)
{
TempStr=DataMod->ProvinceADOQ->FieldByName("ProvinceID")->AsAnsiString.SubString(3,2);
TempStr+=DataMod->ProvinceADOQ->FieldByName("ProvinceName")->AsAnsiString;
//TempStr+="("+DataMod->ProvinceADOQ->FieldByName("DeviceNum")->AsAnsiString+")";
Node1=TreeView1->Items->AddChild(Root,TempStr);
Node1->SelectedIndex=1;
DataMod->WaysADOQ->Close();
SQLStr="Select * from waysTable where ProvinceID=";
SQLStr+=DataMod->ProvinceADOQ->FieldByName("ProvinceID")->AsAnsiString;
SQLStr+=" order by highwayID";
DataMod->WaysADOQ->SQL->Text=SQLStr;
DataMod->WaysADOQ->Open();
DataMod->WaysADOQ->First();
while(!DataMod->WaysADOQ->Eof)
{
TempStr=DataMod->WaysADOQ->FieldByName("highwayID")->AsAnsiString.SubString(5,3);
TempStr+=DataMod->WaysADOQ->FieldByName("highwayName")->AsAnsiString;
Node2=TreeView1->Items->AddChild(Node1,TempStr);
Node2->SelectedIndex=2;
DataMod->WaysADOQ->Next();
}
DataMod->ProvinceADOQ->Next();
}
}
catch(...)
{
//
}
}
lbg 2015-10-08
  • 打赏
  • 举报
回复
方法2,每次TreeNode的展开事件,执行SQL,数据库设计,每个地区ID放入TeeNode的Data里即可

13,825

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧