根据数据库结构生成RzCheckTree
现在大多数的方法是采用递归,但这种操作会频繁的去select数据库,降低了执行效率,稍微改动一些,效果会好不少,这里介绍一种方法,即一次性select出所有数据,然后按照ParentID排序,逐条添加到TreeView,添加前,先遍历TreeView,查找他的上一级节点,遍历Treeview可比select数据快啊,下面看代码: 数据表结构,最顶级parentid值我用的是-1,大家也可以用其他值,但要保证最顶级parentid值最小,层次越深,
procedure TUIOperate.FillTree(RzCheckTree: TRzCheckTree);
var
findq: TADOQuery;
node: TTreeNode; //这个方法是根据记录的id字段值,查找RzCheckTree上的父节点
function FindParentNode(id:Integer):TTreeNode;
var
i:Integer;
begin
Result := nil;
for i := to RzCheckTree.Items.Count - do
begin
//比较Node的Data值和记录的id值
if Integer(RzCheckTree.Items[i].Data) = id then
begin
Result := RzCheckTree.Items[i];
Break;
end;
end;
end; begin
findq := TADOQuery.Create(nil);
findq.Connection := controler.DataConnect.Connection; //这里的Connection指向你的数据连接
try
RzCheckTree.Items.BeginUpdate;
RzCheckTree.Items.Clear;
//选出所有记录,并按parentid排序,这样可以保证先添加顶级节点,在下级记录添加时,总能找到父节点
findq.SQL.Text := 'SELECT * FROM [Catalog] order by parentid,id';
findq.Open;
while not findq.Eof do
begin
//如果是最顶级,直接添加到RzCheckTree
if findq.FieldByName('parentid').AsInteger = - then
//将id值,保存在Node的Data中,以便查找用
RzCheckTree.Items.AddObject(nil,findq.FieldByName('CatalogName').AsString,Pointer(findq.FieldByName('id').AsInteger))
else
begin
//查找上级节点
node := FindParentNode(findq.FieldByName('parentid').AsInteger);
if node <> nil then
RzCheckTree.Items.AddChildObject(node,findq.FieldByName('CatalogName').AsString,Pointer(findq.FieldByName('id').AsInteger));
end;
findq.Next;
end;
finally
findq.Free;
RzCheckTree.Items.EndUpdate;
end;
end;
根据数据库结构生成RzCheckTree的更多相关文章
- PowerDesigner反向工程,根据Oracle数据库结构生成ER图(2014-3-25记)
01.添加数据服务端 02. PowerDesigner 1. 新建PDM:选择菜单File->New Model,[Model type]选择Physical Data Model,[DBMS ...
- sqlalchemy根据数据库结构生成映射的实体
# !/usr/bin/python # -*- coding: UTF-8 -*- from sqlalchemy import * from sqlalchemy.orm import sessi ...
- 根据数据库结构生成TreeView
procedure TUIOperate.FillTree(treeview: TTreeView); var findq: TADOQuery; node: TTreeNode; //这个方法是根据 ...
- delphi 根据数据库结构生成TreeView
procedure TUIOperate.FillTree(treeview: TTreeView); var findq: TADOQuery; node: TTreeNode; / ...
- 利用powerdesigner反向数据库结构,生成ER图
参考月下狼~图腾~:<利用powerdesigner反向数据库结构,生成ER图> https://www.zybuluo.com/Jpz/note/123582 首先新建一个"P ...
- 如何将excel 数据库表结构生成powerdesign物理模型
Option Explicit Dim mdl ' the current model Set mdl = ActiveModel If (mdl Is Nothing) Then MsgBox &q ...
- DjangoORM创建表结构以及生成数据库结构
1. ORM的两种 DB first: 创建表结构--根据表结构生成类-----根据类来操作数据库 Code first: 先写代码------再写类----执行命令(一个类生成一个表)当前主流的用法 ...
- .net mvc 站点自带简易SSL加密传输 Word报告自动生成(例如 导出数据库结构) 微信小程序:动画(Animation) SignalR 设计理念(一) ASP.NET -- WebForm -- ViewState ASP.NET -- 一般处理程序ashx 常用到的一些js方法,记录一下 CryptoJS与C#AES加解密互转
.net mvc 站点自带简易SSL加密传输 因项目需要,传输数据需要加密,因此有了一些经验,现简易抽出来分享! 请求:前端cryptojs用rsa/aes 或 rsa/des加密,后端.net ...
- atitit.自动生成数据库结构脚本,或者更换数据库,基于hibernate4
atitit.自动生成数据库结构脚本,或者更换数据库,基于hibernate4 目前近况:: 更换数据库,但是是使用spring集成的. <!-- hibernate配置文件路径 --> ...
随机推荐
- [PyData] 03 - Data Representation
Ref: http://blog.csdn.net/u013534498/article/details/51399035 如何在Python中实现这五类强大的概率分布 考虑下在mgrid上画二维概率 ...
- ThinkingInJava 学习 之 0000006 复用类
1. 组合语法 将对象引用置于新类中. 2. 继承语法 衍生类自动获得基类中所有的域和方法 super关键字表示基类. 1. 初始化基类 当创建一个衍生类的对象时,该对象创建一个基类的子对象并包含子对 ...
- jstat 简介
1. jstat -gc pid 可以显示gc的信息,查看gc的次数,及时间. 其中最后五项,分别是young gc的次数,young gc的时间,full gc的次数,full gc的时间,gc ...
- Spring.NET依赖注入框架学习--简介
Spring.NET依赖注入框架学习--Spring.NET简介 概述 Spring.NET是一个应用程序框架,其目的是协助开发人员创建企业级的.NET应用程序.它提供了很多方面的功能,比如依赖注入. ...
- 开源库RxJava、ButterKnife
1. 简介 RxJava "RxJava is a Java VM implementation of Reactive Extensions: a library for composin ...
- MassTransit入门
.NET平台ESB框架的中文资料少的可怜,NServiceBus的有几篇,MassTransit的根本找不到,只好硬着头皮看官方的英文文档,顺便翻译出来加深理解. 欢迎拍砖. MassTransit是 ...
- day_5.26python面试重点
列表生成式: ''' 2018-5-26 19:40:58 生成器(generator):在Python中,这种⼀边循环⼀边计算的机制. ''' # 第一种实现 :只要把⼀个列表⽣成式的[ ]改成( ...
- redis(二)--用Redis作MySQL数据库缓存
用Redis作MySQL数据库缓存,必须解决2个问题.首先,应该确定用何种数据结构存储来自mysql的数据:在确定数据结构之后,还要考虑用什么标识作为该数据结构的键. 直观上看,Mysql中的数据都是 ...
- 关于ICO的一些理解
第一次看到ICO,估计很多人都处于懵逼的状态,感觉很抽象. 提到IOC可能想到的下一个词语就是DI IOC:控制反转 DI:依赖注入 那么什么是控制反转呢? 我以前对这个概念也很模糊,最近在知乎上看到 ...
- Nodejs----注册登录
这个小应用使用到了node.js bootstrap express 以及数据库的操作 :使用mongoose对象模型来操作 mongodb 如果没了解过的可以先去基本了解一下相关概念~ 首先注 ...