www.gusucode.com > VC++酒店业务管理系统源程序代码-源码程序 > VC++酒店业务管理系统源程序代码-源码程序\code\代码\DlgViewKH.cpp
// DlgViewKH.cpp : implementation file // Download by http://www.NewXing.com #include "stdafx.h" #include "RMS.h" #include "DlgViewKH.h" #include "DataBinding.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // CDlgViewKH dialog CDlgViewKH::CDlgViewKH(CWnd* pParent /*=NULL*/) : CDialog(CDlgViewKH::IDD, pParent) { //{{AFX_DATA_INIT(CDlgViewKH) m_gender = _T(""); m_company = _T(""); m_job = _T(""); m_name = _T(""); m_no = _T(""); m_tel = _T(""); m_year = 0.0f; //}}AFX_DATA_INIT } void CDlgViewKH::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CDlgViewKH) DDX_Control(pDX, IDC_LIST_KH, m_list); DDX_CBString(pDX, IDC_COMBO_KHGENDER, m_gender); DDX_Text(pDX, IDC_EDIT_KHCOMPANY, m_company); DDX_Text(pDX, IDC_EDIT_KHJOB, m_job); DDX_Text(pDX, IDC_EDIT_KHNAME, m_name); DDX_Text(pDX, IDC_EDIT_KHNO, m_no); DDX_Text(pDX, IDC_EDIT_KHTEL, m_tel); DDX_Text(pDX, IDC_EDIT_KHYEAR, m_year); DDV_MinMaxFloat(pDX, m_year, 1.f, 150.f); //}}AFX_DATA_MAP } BEGIN_MESSAGE_MAP(CDlgViewKH, CDialog) //{{AFX_MSG_MAP(CDlgViewKH) ON_BN_CLICKED(IDC_BTN_KHADD, OnBtnKhadd) ON_BN_CLICKED(IDC_BTN_KHDEL, OnBtnKhdel) ON_BN_CLICKED(IDC_BTN_KHUPD, OnBtnKhupd) ON_NOTIFY(NM_CLICK, IDC_LIST_KH, OnClickListKh) //}}AFX_MSG_MAP END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CDlgViewKH message handlers void CDlgViewKH::OnBtnKhadd() { if (!UpdateData()) return; _RecordsetPtr pRst = NULL; CKHRs rs; try { TESTHR(pRst.CreateInstance(__uuidof(Recordset))); pRst->Open("KH",_variant_t((IDispatch *) m_DBCnt, true), adOpenKeyset, adLockOptimistic, adCmdTable); strcpy(rs.m_sz_no, m_no); strcpy(rs.m_sz_name,m_name); strcpy(rs.m_sz_gender, m_gender); rs.m_f_year = m_year; strcpy(rs.m_sz_job, m_job); strcpy(rs.m_sz_tel, m_tel); strcpy(rs.m_sz_company, m_company); COleSafeArray vaFieldlist, vaValuelist; rs.FillFieldsArray(vaFieldlist,vaValuelist); TESTHR(pRst->AddNew(vaFieldlist, vaValuelist)); pRst->Close(); } catch(_com_error& e) { AfxMessageBox(e.ErrorMessage()); return; } MessageBox("完成操作!"); RefreshData(); } void CDlgViewKH::OnBtnKhdel() { if (!UpdateData()) return; CString sql_; sql_.Format("DELETE FROM KH WHERE KH_NO='%s'",m_no); _bstr_t sql = sql_; try { m_DBCnt->Execute(sql,NULL,adCmdText); } catch(_com_error& e) { AfxMessageBox(e.ErrorMessage()); return; } MessageBox("完成操作!"); RefreshData(); } void CDlgViewKH::OnBtnKhupd() { if (!UpdateData()) return; CString sql_; sql_.Format("SELECT * FROM KH WHERE KH_NO=%s", m_no); _bstr_t sql = sql_; _RecordsetPtr pRst = NULL; CKHRs rs; try { TESTHR(pRst.CreateInstance(__uuidof(Recordset))); pRst->Open(sql,_variant_t((IDispatch *) m_DBCnt, true),adOpenKeyset,adLockOptimistic,adCmdText); strcpy(rs.m_sz_no, m_no); strcpy(rs.m_sz_name,m_name); strcpy(rs.m_sz_gender, m_gender); rs.m_f_year = m_year; strcpy(rs.m_sz_job, m_job); strcpy(rs.m_sz_tel, m_tel); strcpy(rs.m_sz_company, m_company); COleSafeArray vaFieldlist, vaValuelist; rs.FillFieldsArray(vaFieldlist,vaValuelist); pRst->Update(vaFieldlist, vaValuelist); pRst->Close(); } catch(_com_error& e) { AfxMessageBox(e.ErrorMessage()); return; } MessageBox("完成操作!"); RefreshData(); } void CDlgViewKH::RefreshData() { m_list.DeleteAllItems(); m_list.SetRedraw(FALSE); _RecordsetPtr pRst = NULL; IADORecordBinding *picRs = NULL; //Interface Pointer declared.(VC++ Extensions) CKHRs rs; try { _bstr_t strSQL("SELECT * FROM KH"); TESTHR(pRst.CreateInstance(__uuidof(Recordset))); pRst = m_DBCnt->Execute(strSQL, NULL, adCmdText); TESTHR(pRst->QueryInterface(__uuidof(IADORecordBinding),(LPVOID*)&picRs)); TESTHR(picRs->BindToRecordset(&rs)); int i = 0; char buf[128]; while (!pRst->adoEOF) { m_list.InsertItem(0, rs.m_sz_no); m_list.SetItemText(i, 1, rs.m_sz_name); m_list.SetItemText(i, 2, rs.m_sz_gender); sprintf(buf, "%f", rs.m_f_year); m_list.SetItemText(i, 3, buf); m_list.SetItemText(i, 4, rs.m_sz_job); m_list.SetItemText(i, 5, rs.m_sz_tel); m_list.SetItemText(i, 6, rs.m_sz_company); pRst->MoveNext(); } picRs->Release(); pRst->Close(); } catch(_com_error& e) { AfxMessageBox(e.ErrorMessage()); m_list.SetRedraw(TRUE); return; } m_list.SetRedraw(TRUE); } void CDlgViewKH::OnClickListKh(NMHDR* pNMHDR, LRESULT* pResult) { int i = m_list.GetSelectionMark(); m_no = m_list.GetItemText(i,0); m_name = m_list.GetItemText(i,1); m_gender = m_list.GetItemText(i,2); m_year = (float)atof(m_list.GetItemText(i,3)); m_job = m_list.GetItemText(i,4); m_tel = m_list.GetItemText(i,5); m_company = m_list.GetItemText(i,6); UpdateData(FALSE); *pResult = 0; } BOOL CDlgViewKH::OnInitDialog() { CDialog::OnInitDialog(); m_list.InsertColumn(0,"客户号"); m_list.InsertColumn(1,"客户名"); m_list.InsertColumn(2,"性别"); m_list.InsertColumn(3,"年龄"); m_list.InsertColumn(4,"职务"); m_list.InsertColumn(5,"联系电话"); m_list.InsertColumn(6,"工作单位"); RECT rect; m_list.GetWindowRect(&rect); int wid = rect.right - rect.left; m_list.SetColumnWidth(0,wid/7); m_list.SetColumnWidth(1,wid/7); m_list.SetColumnWidth(2,wid/7); m_list.SetColumnWidth(3,wid/7); m_list.SetColumnWidth(4,wid/7); m_list.SetColumnWidth(5,wid/7); m_list.SetColumnWidth(6,wid/7); m_list.SetExtendedStyle(LVS_EX_FULLROWSELECT); RefreshData(); return TRUE; // return TRUE unless you set the focus to a control // EXCEPTION: OCX Property Pages should return FALSE }