按数据库记录构建树控件

2016-01-29 12:02 57 1 收藏

按数据库记录构建树控件,按数据库记录构建树控件

【 tulaoshi.com - C语言心得技巧 】

按数据库记录构建树控件
作者:XuFeng Yuan

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com)

下载本文示例代码

代码运行效果图如下:


简介:
将树中的每一个项目作为数据库中的一条记录(ACCESS2000),将程序启动时,对数据库进行读操作;创建树的各个项目时,是对数据库进行读操作,每次的读取,都是在可是查寻符合条件的记录,并将其一一添加到树中!

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com)

实现方法:
准备:
使用ACCESS2000,创建一个数据库,名字为City.mdb(我们将制作一个关于省与市的树,特别适合通讯录);
在数据库中创建一表,表名为TreeItem,字段内容与类型如下图:



ID: 索引号码(可有,可无)
Name: 项目名称(必须)
ParentItem: 父项名称(必须)
SecNum: 电话区号(可有,可无)

输入一些原始数据.数据库已经准备好,那我们就进行实地的编程阶段.
程序实现:
创建一个基于对话框的工程---TreeData

一.ADO的引入和初始化

由于在程序中,我使用了ADO来连接和操作数据库,所以要进行以下操作:
1.在Stdafx.h中添加引作ADO的代码:
//--------------------------------------------#import "c:program filescommon filessystemadomsado15.dll" no_namespace rename("EOF","adoEOF")//--------------------------------------------
2.在TreeData.h中声明两个私有变量:
public: _ConnectionPtr m_pTreeConn;//连接创建private:CString TreeConnString;//连接字符串
3.在CTreeDataApp的构造函数CTreeDataApp中添加如下代码:
//-------------------------------------------m_TreeConnString=_T("Provider=Microsoft.Jet.OLEDB.4.0;")_T("Data Source=DataBaseCity.mdb;");//-------------------------------------------
4.在CTreeDataApp的初始化函数中添加如下代码:
//-------COM初始化--------------------------------AfxOleInit();/******************连接通讯录数据库********************/HRESULT hRes;try{hRes=m_pTreeConn.CreateInstance(_T("ADODB.Connection"));m_pTreeConn->ConnectionTimeout = 8;//连接ACCESS2000hRes=m_pTreeConn->Open(_bstr_t((LPCTSTR) m_strTelDataSource),_T(""),_T(""),adModeUnknown);}catch(_com_error e)///捕捉异常{CString errormessage;errormessage.Format(_T("连接TelBook.mdb数据库失败!rn错误信息:%s"),e.ErrorMessage());AfxMessageBox(errormessage);///显示错误信息return FALSE;}
二.Recordset的创建:

1.在CTreeDataDlg.h中声明变量:
//------------------------------------------private:HRESULT hRes;_RecordsetPtr m_TreeRecordset; //用于创建一个查询记录集//------------------------------------------public:CImageList m_TreeBootImage; //Tree的图标
2. (1).在对话框窗口中添加一个TreeCtrl控件,一个ComboExe控件; TreeCtrl的风格设置如下图;


(2).导入一个BMP文件,做为Tree的项目图标(TreeBoot.bmp),将其ID设置为IDB_TreeBootImage;

(3).在向导中,为三个控件添加连接对象.

来源:http://www.tulaoshi.com/n/20160129/1484322.html

延伸阅读
采用的是下面的方法可删除,假设重复的是test数据库中的title字段  代码如下: create table bak as (select * from test group by title having count(*)=1);      insert into bak (select * from test grou...
用零长度字符指示不存在数据 若要在 Microsoft Access 数据库中指示不存在数据,可以在“文本”或“备注”字段输入零长度字符串 (零长度字符串:不含字符的字符串。可以使用零长度字符串来表明您知道该字段没有值。输入零长度字符串的方法是键入两个彼此之间没有空格的双引号 (" ")。)。在连接到 Microsoft SQL Server 数据库的 Mi...
->如果我们需要编写一个录入程序,向某个SQLServer数据表(SJB)中录入数据,而这个数据表中包含有多个字段,假设有30个字段,需通过InsertINTO语句完成。 InsertINTOSJBValue(A0,A1,A2,...,A29) 这里A0、A1...A29为字段的录入值,其中,若字段类型为字符型,需用引号括起。并且,如果操作者在录入数据时,对某些字段没...
非常偏门的技巧,很少人会需要限制数据库的记录,但还是列出来给大家参考。假如数据库中只允许用户输入3个记录,那么我们可以在Table1的BeforeInsert事件里加入判断语句: procedure TForm1.Table1BeforeInsert(DataSet: TDataSet);beginIF Table1.RecNo =3 thenbeginmessagedlg(记录只能输入三个,mtinformation,[mbok],0);abort;en...
随着 Microsoft 的 .NET 框架的逐渐流行,许多开发人员迫切想了解关于将 .NET 应用程序与 Oracle 集成的最好的方式的信息 不仅在基本的连通性方面,还包括与使用 Visual Studio.NET (VS.NET) 进行有效的应用程序开发的关系。 在本文中,我将说明构建使用 Oracle 数据库的 .NET 应用程序所涉及到的基本但不可或缺的过程,包括: 如何...