📄 detailquerydlg.cpp
字号:
// DetailQueryDlg.cpp : implementation file
//
#include "stdafx.h"
#include "CRDBS.h"
#include "DetailQueryDlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CDetailQueryDlg dialog
CDetailQueryDlg::CDetailQueryDlg(CWnd* pParent /*=NULL*/)
: CDialog(CDetailQueryDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CDetailQueryDlg)
// NOTE: the ClassWizard will add member initialization here
//}}AFX_DATA_INIT
}
void CDetailQueryDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CDetailQueryDlg)
DDX_Control(pDX, IDC_COMBO_APPROACH, m_comboApproach);
DDX_Control(pDX, IDC_COMBO_AREA, m_comboArea);
DDX_Control(pDX, IDC_COMBO_PROFESSION, m_comboProfession);
DDX_Control(pDX, IDC_COMBO_VOCATION, m_comboVocation);
DDX_Control(pDX, IDC_LIST_HR, m_listHR);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CDetailQueryDlg, CDialog)
//{{AFX_MSG_MAP(CDetailQueryDlg)
ON_CBN_CLOSEUP(IDC_COMBO_APPROACH, OnCloseupComboApproach)
ON_CBN_CLOSEUP(IDC_COMBO_AREA, OnCloseupComboArea)
ON_CBN_CLOSEUP(IDC_COMBO_PROFESSION, OnCloseupComboProfession)
ON_CBN_CLOSEUP(IDC_COMBO_VOCATION, OnCloseupComboVocation)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CDetailQueryDlg message handlers
BOOL CDetailQueryDlg::OnInitDialog()
{
CDialog::OnInitDialog();
// TODO: Add extra initialization here
DWORD dwExStyle = LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES |
LVS_EX_HEADERDRAGDROP | LVS_EX_ONECLICKACTIVATE | LVS_EX_UNDERLINEHOT;
m_listHR.SetExtendedStyle(dwExStyle);
//初始客户信息列表控件
//添加客户ID列
LV_COLUMN lvColumn;
lvColumn.mask = LVCF_FMT | LVCF_WIDTH | LVCF_TEXT | LVCF_SUBITEM;
lvColumn.fmt = LVCFMT_CENTER;
lvColumn.cx = 60;
lvColumn.iSubItem = 0;
lvColumn.pszText = "客户ID";
m_listHR.InsertColumn(0, &lvColumn);
//添加姓名名称列
lvColumn.cx = 80;
lvColumn.iSubItem = 1;
lvColumn.pszText = "姓名";
m_listHR.InsertColumn(1, &lvColumn);
//添加所在地区列
lvColumn.cx = 80;
lvColumn.iSubItem = 2;
lvColumn.pszText = "所在地区";
m_listHR.InsertColumn(2, &lvColumn);
//添加职业列
lvColumn.cx = 80;
lvColumn.iSubItem = 3;
lvColumn.pszText = "职业";
m_listHR.InsertColumn(3, &lvColumn);
//添加行业列
lvColumn.cx = 80;
lvColumn.iSubItem = 4;
lvColumn.pszText = "行业";
m_listHR.InsertColumn(4, &lvColumn);
//添加所在单位列
lvColumn.cx = 80;
lvColumn.iSubItem = 5;
lvColumn.pszText = "所在单位";
m_listHR.InsertColumn(5, &lvColumn);
//添加结识途径列
lvColumn.cx = 80;
lvColumn.iSubItem = 6;
lvColumn.pszText = "结识途径";
m_listHR.InsertColumn(6, &lvColumn);
//添加e-mail列
lvColumn.cx = 80;
lvColumn.iSubItem = 7;
lvColumn.pszText = "e-mail";
m_listHR.InsertColumn(7, &lvColumn);
//添加固定电话列
lvColumn.cx = 80;
lvColumn.iSubItem = 8;
lvColumn.pszText = "固定电话";
m_listHR.InsertColumn(8, &lvColumn);
//添加移动电话列
lvColumn.cx = 80;
lvColumn.iSubItem = 9;
lvColumn.pszText = "移动电话";
m_listHR.InsertColumn(9, &lvColumn);
//添加爱好列
lvColumn.cx = 80;
lvColumn.iSubItem = 10;
lvColumn.pszText = "爱好";
m_listHR.InsertColumn(10, &lvColumn);
//添加说明列
lvColumn.cx = 140;
lvColumn.iSubItem = 11;
lvColumn.pszText = "说明";
m_listHR.InsertColumn(11, &lvColumn);
//加载四个组合框控件中的数据
InitComboData();
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void CDetailQueryDlg::InitComboData()
{
TRY{
CRecordset rs(m_pDB);
//打开所有的地区信息记录.
rs.Open(CRecordset::dynaset, "select * from area_info_tab");
while (!rs.IsEOF()) {
CString strName;
//获取地区信息名称字段值
rs.GetFieldValue(1, strName);
//向地区信息名称组合框添加地区信息名称.
m_comboArea.AddString(strName);
rs.MoveNext();
}
rs.Close();
m_comboArea.SetCurSel(0);
rs.Open(CRecordset::dynaset, "select * from approach_info_tab");
while (!rs.IsEOF()) {
CString strName;
//获取结识途径信息名称字段值
rs.GetFieldValue(1, strName);
//向结识途径信息名称组合框添加结识途径信息名称.
m_comboApproach.AddString(strName);
rs.MoveNext();
}
rs.Close();
m_comboApproach.SetCurSel(0);
rs.Open(CRecordset::dynaset, "select * from profession_info_tab");
while (!rs.IsEOF()) {
CString strName;
//获取职位信息名称字段值
rs.GetFieldValue(1, strName);
//向职位信息名称组合框添加职位信息名称.
m_comboProfession.AddString(strName);
rs.MoveNext();
}
rs.Close();
m_comboProfession.SetCurSel(0);
rs.Open(CRecordset::dynaset, "select * from vocation_info_tab");
while (!rs.IsEOF()) {
CString strName;
//获取行业信息名称字段值
rs.GetFieldValue(1, strName);
//向行业信息名称组合框添加行业信息名称.
m_comboVocation.AddString(strName);
rs.MoveNext();
}
m_comboVocation.SetCurSel(0);
rs.Close();
}
CATCH(CDBException,ex)
{
AfxMessageBox (ex->m_strError);
AfxMessageBox (ex->m_strStateNativeOrigin);
}
AND_CATCH(CMemoryException,pEx)
{
pEx->ReportError();
AfxMessageBox ("memory exception");
}
AND_CATCH(CException,e)
{
TCHAR szError[100];
e->GetErrorMessage(szError,100);
AfxMessageBox (szError);
}
END_CATCH
}
void CDetailQueryDlg::OnCloseupComboApproach()
{
// TODO: Add your control notification handler code here
CString sql;
CString strSelected;
//获取当前选择项目
int nIndex = m_comboApproach.GetCurSel();
//如果没有选择,退出
if(nIndex == -1)
return;
//获取当前选择的结识途径名称
m_comboApproach.GetLBText(nIndex,strSelected);
//如果选项为空,退出
if(strSelected.IsEmpty())
return;
//构造打开所有结识途径名称为strSelected客户信息的sql语句
sql.Format("select * from customer_info_tab where approach = '%s' order by id",
strSelected);
//根据sql语句打开满足条件的客户信息,显示在列表中
RefreshCtrlData(sql);
}
void CDetailQueryDlg::OnCloseupComboArea()
{
// TODO: Add your control notification handler code here
CString sql;
CString strSelected;
//获取当前选择项目
int nIndex = m_comboArea.GetCurSel();
//如果没有选择,退出
if(nIndex == -1)
return;
//获取当前选择的地区信息名称
m_comboArea.GetLBText(nIndex,strSelected);
//如果选项为空,退出
if(strSelected.IsEmpty())
return;
//构造打开所有地区信息名称为strSelected客户信息的SQL语句
sql.Format("select * from customer_info_tab where area = '%s' order by id",
strSelected);
//根据sql语句打开满足条件的客户信息,显示在列表中
RefreshCtrlData(sql);
}
void CDetailQueryDlg::OnCloseupComboProfession()
{
// TODO: Add your control notification handler code here
CString sql;
CString strSelected;
//获取当前选择项目
int nIndex = m_comboProfession.GetCurSel();
//如果没有选择,退出
if(nIndex == -1)
return;
//获取当前选择的职位名称
m_comboProfession.GetLBText(nIndex,strSelected);
//如果选项为空,退出
if(strSelected.IsEmpty())
return;
//构造打开所有职位名称为strSelected客户信息的SQL语句
sql.Format("select * from customer_info_tab where profession = '%s' order by id",
strSelected);
//根据sql语句打开满足条件的客户信息,显示在列表中
RefreshCtrlData(sql);
}
void CDetailQueryDlg::OnCloseupComboVocation()
{
// TODO: Add your control notification handler code here
CString sql;
CString strSelected;
//获取当前选择项目
int nIndex = m_comboVocation.GetCurSel();
//如果没有选择,退出
if(nIndex == -1)
return;
//获取当前选择的行业名称
m_comboVocation.GetLBText(nIndex,strSelected);
//如果选项为空,退出
if(strSelected.IsEmpty())
return;
//构造打开所有行业名称为strSelected客户信息的SQL语句
sql.Format("select * from customer_info_tab where vocation = '%s' order by id",
strSelected);
//根据sql语句打开满足条件的客户信息,显示在列表中
RefreshCtrlData(sql);
}
void CDetailQueryDlg::RefreshCtrlData(CString sql)
{
// TODO: Add your control notification handler code here
if(!m_pDB->IsOpen()){
MessageBox("数据库未打开");
return;
}
m_listHR.DeleteAllItems();
TRY{
CRecordset rs(m_pDB);
//打开所有的满足条件的客户信息记录
rs.Open(CRecordset::dynaset, sql);
while (!rs.IsEOF()) {
int id;
CString name,area,profession,vocation,company;
CString approach,email,phone,mobile,interest,memo;
CDBVariant var;
//获取客户信息ID字段值
rs.GetFieldValue((short)0, var, SQL_C_SLONG);
if (var.m_dwType != DBVT_NULL)
id = var.m_iVal;
var.Clear();
//获取姓名字段值
rs.GetFieldValue(1, name);
//获取地区信息字段值
rs.GetFieldValue(2, area);
//获取职业字段值
rs.GetFieldValue(3, profession);
//获取行业字段值
rs.GetFieldValue(4, vocation);
//获取所在单位字段值
rs.GetFieldValue(5, company);
//获取结识途径字段值
rs.GetFieldValue(6, approach);
//获取email字段值
rs.GetFieldValue(7, email);
//获取固定电话字段值
rs.GetFieldValue(8, phone);
//获取移动电话字段值
rs.GetFieldValue(9, mobile);
//获取爱好字段值
rs.GetFieldValue(10, interest);
//获取备注字段值
rs.GetFieldValue(11, memo);
//向客户信息列表控件中加入新的一行信息.
InsertHRInfoItem(id,name,area,profession,vocation,company,approach,
email,phone,mobile,interest,memo);
rs.MoveNext();
}
rs.Close();
}
CATCH(CDBException,ex)
{
AfxMessageBox (ex->m_strError);
AfxMessageBox (ex->m_strStateNativeOrigin);
}
AND_CATCH(CMemoryException,pEx)
{
pEx->ReportError();
AfxMessageBox ("memory exception");
}
AND_CATCH(CException,e)
{
TCHAR szError[100];
e->GetErrorMessage(szError,100);
AfxMessageBox (szError);
}
END_CATCH
}
void CDetailQueryDlg::InsertHRInfoItem(int id,CString name,CString area,CString prof,CString voc,CString com,CString appr,CString email,CString phone,CString mobile,CString interest,CString memo)
{
//获取当前的纪录条数.
int nIndex = m_listHR.GetItemCount();
LV_ITEM lvItem;
lvItem.mask = LVIF_TEXT ;
lvItem.iItem = nIndex; //行数
lvItem.iSubItem = 0;
CString temp ;
temp.Format("%d",id);
lvItem.pszText = (char*)(LPCTSTR)temp; //第一列
//在最后一行插入记录值.
m_listHR.InsertItem(&lvItem);
//设置该行的其他列的值.
m_listHR.SetItemText(nIndex,1,name);
m_listHR.SetItemText(nIndex,2,area);
m_listHR.SetItemText(nIndex,3,prof);
m_listHR.SetItemText(nIndex,4,voc);
m_listHR.SetItemText(nIndex,5,com);
m_listHR.SetItemText(nIndex,6,appr);
m_listHR.SetItemText(nIndex,7,email);
m_listHR.SetItemText(nIndex,8,phone);
m_listHR.SetItemText(nIndex,9,mobile);
m_listHR.SetItemText(nIndex,10,interest);
m_listHR.SetItemText(nIndex,11,memo);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -