1. 通过#import 使用ADO
在ADOConn.h中加入
#import "c:/Program Files/Common Files/System/ado/msado15.dll" no_namespace rename("EOF","adoEOF") rename("BOF","adoBOF")
2. 连接数据库
//添加一个指向Connection对象的指针: _ConnectionPtr m_pConnection;
// 创建Connection对象 m_pConnection.CreateInstance("ADODB.Connection");
// 设置连接字符串,必须是BSTR型或者_bstr_t类型 _bstr_t strConnect = "Provider=SQLOLEDB;Server=10.103.0.189;Database=HR;uid=sa;pwd=duanshuo";
m_pConnection->Open(strConnect,"","",adModeUnknown);
Server ,Database ,uid ,pwd 根据实际情况更改
3. 在Tree控件中显示节点图标
HTREEITEM m_root; //保存Tree控件的根节点
CImageList m_treeImageList; //定义图像列表
m_treeImageList.Create(16,16,FALSE,1,0); //创建CImageList控件
HICON hIcon = ::LoadIcon(AfxGetResourceHandle(), MAKEINTRESOURCE(IDI_ICON1)); //装入ICON资源
m_treeImageList.Add(hIcon); //将ICON资源添加到CImageList控件中
m_tree.SetImageList(&m_treeImageList, LVSIL_NORMAL);//将CImageList控件与 Tree控件相关联
m_root = m_tree.InsertItem("部门信息"); //添加根节点
HTREEITEM m_child;
m_child = m_tree.InsertItem("111",m_root); //添加子节点
m_tree.InsertItem("222", m_child);
m_tree.Expand(m_root, TVE_EXPAND); //展开根节点
4. 在Tree控件中获得节点值
HTREEITEM node; //用于保存当前节点
node = m_tree.GetSelectedItem(); //取得当前节点值
HTREEITEM parent; //读取父节点
parent = m_tree.GetParentItem(node);
CString m_Upper = m_tree.GetItemText(parent);
int UpperId = m_tree.GetItemData(parent);
CString DepId = m_tree.GetItemData(node);
int DepName = m_tree.GetItemText(node);
5. 响应单击Tree控件
在初始化中加入:
m_treectrl.DeleteAllItems();
HTREEITEM hti1= m_treectrl.InsertItem("Item 1");
hti11=m_treectrl.InsertItem("Item 11", hti1);
hti12=m_treectrl.InsertItem("Item 12", hti1);
hti13=m_treectrl.InsertItem("Item 13", hti1);
在.cpp中加入:
ON_NOTIFY(TVN_SELCHANGED, IDC_TREE1, OnSelchangedTree1)
在.h中加入:
afx_msg void OnSelchangedTree1(NMHDR* pNMHDR, LRESULT* pResult);
响应点击代码:
void CTreectrlDlg::OnSelchangedTree1(NMHDR* pNMHDR, LRESULT* pResult) { NM_TREEVIEW* pNMTreeView = (NM_TREEVIEW*)pNMHDR;
// TODO: Add your control notification handler code here
HTREEITEM hItem1;
hItem1=m_treectrl.GetSelectedItem();
if (hItem1==hti11)
{ AfxMessageBox("11"); }
else if (hItem1==hti12)
{ AfxMessageBox("12");
}
else if (hItem1==hti13)
{ AfxMessageBox("13");
}
*pResult = 0;
}
6. ADO Data控件与DataList控件
ADO Data控件:
ADO Data 控件是使用ADO技术访问数据库的具体实现。首先,可以用ADO Data 控件快速地建立一个到数据库的连接;其次,ADO Data控件使用RECORDSET对象对存储在数据库中数据的访问;第三,ADO Data控件可以执行大部分数据库访问操作,不过它不能显示数据库中的数据,要与其它控制结合来使用。
1. 在本程序中,在“General”选项卡中取消“Visible”选择。
2. 在“Control”选项卡中,选择“Use Connecting String”,点击“Build...”
在“数据链接属性”对话框下选择“Microsoft OLE DB Provider for SQL Server”。
在“连接”选项卡中设置服务器名称和在服务器上选择数据库,然后可以点击“测试连接”。
3. 在“RecordSource”选项卡中,在“Command Type”中选择“2-adCmdTable”,在“Table...”中选择“Users”。
以上步骤为“用户管理”中的方法。
DataList控件:
在“All”选项卡中,为“RowSource”属性选择IDC_ADODC1,
为“ListField”属性选择UserName。在运行时,DataList 控件显示在这个属性中所指定的字段的值。
为“BoundColumn”属性选择User_Type。在本例中,m_datalist.GetBoundText()将返回选择的用户类型值。