如何实现从数据库导出数据到treeview控件

starrynight 2002-05-16 01:54:54
正做前端为delphi,后端为sql的数据库编程,如何实现从后端类别表中按类别导出到treeview控件,类别为四层!望高手赐教!!!!
...全文
123 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
mrzho 2002-07-01
  • 打赏
  • 举报
回复
.
Billy_Chen28 2002-05-16
  • 打赏
  • 举报
回复
参考:
procedure TForm5.LoadTreeView;
var
strsql:string;
begin
try

// DataModule3.ADOTable3.open;
// DataModule3.ADOTable3.Locate('DTname',RzComboBox1.Text,[lopartialkey]);
// tid:=inttostr(DataModule3.ADOTable3.FieldByName('id').value);
strsql:='select * from T where NodeType="bs"';
DQ.Active :=false;
DQ.SQL.Clear ;
DQ.SQL.Add(strsql);
DQ.Active :=true;
DQ.Filtered :=true;
DQ.Filter := 'Parent=0';
U_DiGui(0,RzTreeView1.TopItem );//从当前0层开始递归建树
except
showmessage('字典里没有数据!');
end;
end;
procedure TForm5.U_DiGui(parentID:Cardinal;ParentNode:TTreeNode);
var
tmpTBData:array of TableData;
i,j:integer;
tmpNode:TTreeNode;

begin
j:=DQ.RecordCount;
setlength(tmpTBData,j);//保存递规上一层结点值
for i:=0 to j-1 do begin
tmpTBData[i].ID := Cardinal(DQ.fieldbyname('ID').value);
tmpTBData[i].Name := DQ.fieldbyname('Name').value;
tmpTBData[i].ParentID := Cardinal(DQ.fieldbyname('Parent').value);
DQ.Next;
end;
for i:=0 to j-1 do begin //递规调用建立所有结点
tmpNode:=RzTreeView1.Items.AddChild(ParentNode,tmpTBData[i].Name);
// tmpNode.ImageIndex:=2;
new(pData);
pData^.ID:=tmpTBData[i].ID;
tmpNode.Data:=pData;
DQ.Filter := 'Parent=' + IntToStr(Integer(tmpTBData[i].ID));
if DQ.RecordCount >0 then begin
U_DiGui(tmpTBData[i].ID,tmpNode );
end;
end;
end;

procedure TForm5.FormShow(Sender: TObject);
begin
LoadTreeView;
rzTreeView1.TopItem.Expanded:=true;
end;
王集鹄 2002-05-16
  • 打赏
  • 举报
回复
//参考
http://www.csdn.net/Expert/TopicView1.asp?id=688364

function DataSetToTreeNode(mDataSet: TDataSet;
mTreeView: TTreeView; mTreeNode: TTreeNode;
mParentText: string): Boolean;
const
cFieldNameParent = 'UpperTreeId';
cFieldNameTreeName = 'TreeName';
cFieldNameTreeId = 'TreeId';
cFieldNames = cFieldNameParent + ';' + cFieldNameTreeName + ';' + cFieldNameTreeId;
var
vTreeNode: TTreeNode;
vFieldValues: Variant;
begin
Result := False;
if not Assigned(mDataSet) then Exit;
if not Assigned(mTreeView) then Exit;
if not mDataSet.Active then Exit;
mDataSet.Filtered := False;
mDataSet.Filter := Format('%s=%s', [cFieldNameParent, QuotedStr(mParentText)]);
mDataSet.Filtered := True;
if mDataSet.RecordCount = 0 then Exit;
mDataSet.First;
while not mDataSet.Eof do begin
vTreeNode := mTreeView.Items.AddChild(mTreeNode,
mDataSet.FieldByName(cFieldNameTreeName).AsString);
vFieldValues := mDataSet[cFieldNames];
DataSetToTreeNode(mDataSet, mTreeView, vTreeNode,
mDataSet.FieldByName(cFieldNameTreeID).AsString);
///////Begin 恢复位置
mDataSet.Filtered := False;
mDataSet.Filter := Format('%s=%s', [cFieldNameParent, QuotedStr(mParentText)]);
mDataSet.Filtered := True;
mDataSet.Locate(cFieldNames, vFieldValues, []);
///////End 恢复位置
mDataSet.Next;
end;
Result := True;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
TreeView1.Items.Clear;
DataSetToTreeNode(Table1, TreeView1, nil, 'NULL');
end;


zhangchao_7622 2002-05-16
  • 打赏
  • 举报
回复
从Query中一条一条提取数据写入TREEVIEW中呀。
nodefault 2002-05-16
  • 打赏
  • 举报
回复
to mrzho(mrzhou):
你看看我的問題吧.和這個問題比較相似.
http://www.csdn.net/expert/topic/727/727520.xml?temp=.424328
mrzho 2002-05-16
  • 打赏
  • 举报
回复
http://soesite.com/howa/img/a.JPG
应该是你要的结果,在TREEVIEW里的内容所有都是从数据库里来的。
你参都一下?
DeathCat 2002-05-16
  • 打赏
  • 举报
回复
你的库结构呢?
DataPie数据导入导出工具 v3.4源码 源码描述: DataPie 功能:SQL server 2008、ORACLE与ACCESS 2007数据的导入、导出、存储过程计算,支持EXCEL2007、EXCEL2003、ACCESS2007、 CSV文件导入数据,支持CSV文件转EXCEL文件。 更新 V1.0,2012年2月3日 支持sql server导入导出、存储、过程调用 V2.0,2012年2月15日 主要变化:新增ACCESS2007支持,重写大部分代码,重命名为DataPie V2.01,2012年3月1日 新增数据服务的开启与关闭 V2.04,2012年3月12日 新增treeview控件节点的双击事件,添加导出默认文件名,修订打包程序,修订默认导出表最大数量为10, 新增存储过程调用timeout属性,控制只允许一个进程运行 V2.05,2012年3月19日 新增access文件后缀的判断,测试连接功能,新增是否存在sql服务的判定,以及默认打开sql服务。 修正treeview双击根节点,不添加到列表中。修正重新登录后,还留下前一次登录时,选择的信息。 V2.06,2012年4月15日 添加通过sql表值函数进行分页的支持。 V3.0.1,2012年5月13日 重构整个数据访问层,增强了扩展性(只需要实现接口IDBUtility中的几个方法,即可轻松扩展到其它数据)。 整合调整了一些类库,修正了模板导出时,格式与数据中字段顺序不一致的问题。 增加了分多个EXCEL导出数据。 V3.0.2,2012年5月14日 修正了ACCSS无法识别联合查询的bug,更新了打包的属性。 V3.1,2012年5月17日 重构了表现层。 V3.2,2012年5月19日 增加了对ORACLE数据的支持。 V3.2.1,2012年6月13日 增加了对ACCESS数据导入数据的支持 V3.3,2012年7月25日 重构了界面层,将EXCEL导入导出相关逻辑独立出来放入UiServices类,添加自定义sql导出功能 V3.4,2012年7月29日 添加了csv转EXCEL工具,调整了UiServices类的结构。多表导出增加了OFFICE组件方式导出

2,507

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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