⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 customermanager.cpp

📁 本人工作中的一个软件开发实例。里面包含了数据库
💻 CPP
字号:
// CustomerManager.cpp : implementation file
//

#include "stdafx.h"
#include "OIL.h"
#include "CustomerManager.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CCustomerManager dialog


CCustomerManager::CCustomerManager(CWnd* pParent /*=NULL*/)
	: CDialog(CCustomerManager::IDD, pParent)
{
	//{{AFX_DATA_INIT(CCustomerManager)
		// NOTE: the ClassWizard will add member initialization here
	//}}AFX_DATA_INIT
}


void CCustomerManager::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CCustomerManager)
	DDX_Control(pDX, IDC_LIST_CUSTOMER, m_listCustomer);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CCustomerManager, CDialog)
	//{{AFX_MSG_MAP(CCustomerManager)
	ON_BN_CLICKED(IDC_CUSTOMER_ADD, OnCustomerAdd)
	ON_BN_CLICKED(IDC_CUSTOMER_EDIT, OnCustomerEdit)
	ON_BN_CLICKED(IDC_CUSTOMER_DEL, OnCustomerDel)
	ON_NOTIFY(NM_DBLCLK, IDC_LIST_CUSTOMER, OnDblclkListCustomer)
	ON_WM_SHOWWINDOW()
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CCustomerManager message handlers

void CCustomerManager::OnCustomerAdd() 
{
	// TODO: Add your control notification handler code here
	CCustomerAdd m_dlgCustomerAdd ;
    m_dlgCustomerAdd.m_nDoWhat=ADD;      //新增客户资料
    m_dlgCustomerAdd.m_pParent=this;

	//显示对话框	    
	if(m_dlgCustomerAdd.DoModal()==IDOK)
	{
		//显示用户数据
		CString sql="SELECT * FROM customer";
		ReadtoListCtrl(&m_listCustomer,sql);
	}
	//选中修改行	
	DispListCtrlRow(&m_listCustomer,0);
}

void CCustomerManager::OnOK() 
{
	// TODO: Add extra validation here
	
	CDialog::OnOK();
}


void CCustomerManager::OnCancel() 
{
	// TODO: Add extra validation here	
	CDialog::OnCancel();
}

//修改客户
void CCustomerManager::OnCustomerEdit() 
{
	// TODO: Add your control notification handler code here
	// TODO: Add your control notification handler code here
	POSITION pos = m_listCustomer.GetFirstSelectedItemPosition();
	//如果选中一行
	if(pos)
	{   
		int nItem = m_listCustomer.GetNextSelectedItem(pos);
		CCustomerAdd m_dlgCustomerAdd;
		
		//传送参数
		m_hWnd=m_listCustomer.GetSafeHwnd();
		m_dlgCustomerAdd.m_nDoWhat=2;				//修改客户资料
		m_dlgCustomerAdd.m_pParent			=this;		
		m_dlgCustomerAdd.m_strCustomerID			=m_listCustomer.GetItemText(nItem,0);
		m_dlgCustomerAdd.m_strCustomerName			=m_listCustomer.GetItemText(nItem,1);
		m_dlgCustomerAdd.m_strCustomerShort			=m_listCustomer.GetItemText(nItem,2);
		m_dlgCustomerAdd.m_strCustomerShortEnglish	=m_listCustomer.GetItemText(nItem,3);
		m_dlgCustomerAdd.m_strAddress				=m_listCustomer.GetItemText(nItem,4);
		m_dlgCustomerAdd.m_strTelephone				=m_listCustomer.GetItemText(nItem,5);
		m_dlgCustomerAdd.m_strNotes					=m_listCustomer.GetItemText(nItem,6);
		m_dlgCustomerAdd.m_strHandler				=m_listCustomer.GetItemText(nItem,7);
		
        //显示对话框	    
		if(m_dlgCustomerAdd.DoModal()==IDOK)
		{
			//显示用户数据
			CString sql="SELECT * FROM customer";
			ReadtoListCtrl(&m_listCustomer,sql);			
		}
		//选中修改行	
		DispListCtrlRow(&m_listCustomer,nItem);
	}
	else
		AfxMessageBox("请选择一行数据!");
}

//删除客户内容
void CCustomerManager::OnCustomerDel() 
{
	// TODO: Add your control notification handler code here
	CString sql;
	POSITION pos = m_listCustomer.GetFirstSelectedItemPosition();

	//如果选中一行,则生成动态的sql语句
	if(pos)
	{   
		int nItem = m_listCustomer.GetNextSelectedItem(pos);
		if(!(AfxMessageBox("你真的要删除此计录?",MB_YESNO)==IDYES))
		{   
			DispListCtrlRow(&m_listCustomer,nItem);
			return;
		}

		//生成SQL语句		
        sql="delete customer where customerID='"+m_listCustomer.GetItemText(nItem,0)+"'";	

		//执行此sql语句
		_variant_t	RecordsAffected;
		theApp.m_pConnection->Execute((_bstr_t)sql,&RecordsAffected,adCmdText);

		//删除此行数据
		m_listCustomer.DeleteItem(nItem);

		//选中前一行数据
		if(nItem==0)
		{
			nItem=0;
		}
		else
		{
			nItem--;
		}		
		DispListCtrlRow(&m_listCustomer,nItem);
	}
	else
		AfxMessageBox("请选择一行数据!");
}

//修改客户内容
void CCustomerManager::OnDblclkListCustomer(NMHDR* pNMHDR, LRESULT* pResult) 
{
	OnCustomerEdit();
}

//初始化客户管理框
BOOL CCustomerManager::OnInitDialog() 
{
	CDialog::OnInitDialog();
	
	// TODO: Add extra initialization here
	//设置List Control背景色及字体颜色
	m_listCustomer.SetBkColor(RGB(240,247,233));;
	m_listCustomer.SetTextColor(RGB(250,0,0));

	//清空List控件的数据
    for(int delcolumn=100;delcolumn>=0;delcolumn--)
		m_listCustomer.DeleteColumn(delcolumn);

	//设置List控件的列
    DWORD		dwStyle;
	RECT		rect;
	LV_COLUMN	lvc;
	dwStyle = m_listCustomer.GetStyle();
	dwStyle |= LVS_EX_GRIDLINES |LVS_EX_FULLROWSELECT|LVS_SHOWSELALWAYS ;
	m_listCustomer.SetExtendedStyle(dwStyle);
	m_listCustomer.GetClientRect(&rect);
	lvc.mask = LVCF_TEXT | LVCF_SUBITEM | LVCF_WIDTH |LVCF_FMT;
	lvc.fmt=LVCFMT_LEFT;

	lvc.iSubItem = 0;
	lvc.pszText = _T("代号");
	lvc.cx = 120;
	m_listCustomer.InsertColumn(1,&lvc);

	lvc.iSubItem = 1;
	lvc.pszText = _T("名称");
	lvc.cx = 120;
	m_listCustomer.InsertColumn(2,&lvc);

    lvc.iSubItem = 2;
	lvc.pszText = _T("简写");
	lvc.cx = 80;
	m_listCustomer.InsertColumn(3,&lvc);

	lvc.iSubItem = 3;
	lvc.pszText = _T("英文简写");
	lvc.cx = 80;
	m_listCustomer.InsertColumn(4,&lvc);

	lvc.iSubItem = 4;
	lvc.pszText = _T("地址");
	lvc.cx = 120;
	m_listCustomer.InsertColumn(5,&lvc);

	lvc.iSubItem = 5;
	lvc.pszText = _T("电话");
	lvc.cx = 60;
	m_listCustomer.InsertColumn(6,&lvc);

	lvc.iSubItem = 6;
	lvc.pszText = _T("注释");
	lvc.cx = 80;
	m_listCustomer.InsertColumn(7,&lvc);

	lvc.iSubItem = 7;
	lvc.pszText = _T("经办人");
	lvc.cx = 60;
	m_listCustomer.InsertColumn(8,&lvc);	

	//显示数据
	CString  m_strSQL="select CustomerID,CustomerName,CustomerShort,CustomerShortEnglish, Address,Telephone,Handler,Notes \
		               from Customer";
    ReadtoListCtrl(&m_listCustomer,m_strSQL);

	//设置选取行
    int nItem=0;
	DispListCtrlRow(&m_listCustomer,nItem);

	//初始化指针
	//m_pdlgCustomerAdd=NULL;

	return false;
	//return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

BOOL CCustomerManager::DestroyWindow() 
{
	// TODO: Add your specialized code here and/or call the base class

	return CDialog::DestroyWindow();
}

void CCustomerManager::OnShowWindow(BOOL bShow, UINT nStatus) 
{
	CDialog::OnShowWindow(bShow, nStatus);
	
	// TODO: Add your message handler code here
		//设置选取行
    //int nItem=0;
	//DispListCtrlRow(&m_listCustomer,nItem);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -