www.gusucode.com > VC++酒店业务管理系统源程序代码-源码程序 > VC++酒店业务管理系统源程序代码-源码程序\code\代码\DlgViewCP.cpp
//Download by http://www.NewXing.com // DlgViewCP.cpp : implementation file // #include "stdafx.h" #include "RMS.h" #include "DlgViewCP.h" #include "DataBinding.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // CDlgViewCP dialog CDlgViewCP::CDlgViewCP(CWnd* pParent /*=NULL*/) : CDialog(CDlgViewCP::IDD, pParent) { //{{AFX_DATA_INIT(CDlgViewCP) m_detail = _T(""); m_kind = _T(""); m_name = _T(""); m_no = _T(""); m_price = 0.0f; //}}AFX_DATA_INIT } void CDlgViewCP::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CDlgViewCP) DDX_Control(pDX, IDC_LIST_CP, m_list); DDX_Text(pDX, IDC_EDIT_VCDETAIL, m_detail); DDX_Text(pDX, IDC_EDIT_VCKIND, m_kind); DDX_Text(pDX, IDC_EDIT_VCNAME, m_name); DDX_Text(pDX, IDC_EDIT_VCNO, m_no); DDX_Text(pDX, IDC_EDIT_VCPRICE, m_price); //}}AFX_DATA_MAP } BEGIN_MESSAGE_MAP(CDlgViewCP, CDialog) //{{AFX_MSG_MAP(CDlgViewCP) ON_NOTIFY(NM_CLICK, IDC_LIST_CP, OnClickListCp) ON_BN_CLICKED(IDC_BTN_VCADD, OnBtnVcadd) ON_BN_CLICKED(IDC_BTN_VCDEL, OnBtnVcdel) ON_BN_CLICKED(IDC_BTN_VCQRY, OnBtnVcqry) ON_BN_CLICKED(IDC_BTN_VCUPD, OnBtnVcupd) //}}AFX_MSG_MAP END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CDlgViewCP message handlers void CDlgViewCP::RefreshData(LPCTSTR qry) { m_list.DeleteAllItems(); m_list.SetRedraw(FALSE); _RecordsetPtr pRst = NULL; IADORecordBinding *picRs = NULL; //Interface Pointer declared.(VC++ Extensions) CCPRs rs; try { _bstr_t strSQL = qry; 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_kind); sprintf(buf, "%f", rs.m_f_price); m_list.SetItemText(i, 3, buf); m_list.SetItemText(i, 4, rs.m_sz_detail); pRst->MoveNext(); } picRs->Release(); pRst->Close(); } catch(_com_error& e) { AfxMessageBox(e.ErrorMessage()); m_list.SetRedraw(TRUE); return; } m_list.SetRedraw(TRUE); } BOOL CDlgViewCP::OnInitDialog() { CDialog::OnInitDialog(); m_list.InsertColumn(0,"菜谱号"); m_list.InsertColumn(1,"菜名"); m_list.InsertColumn(2,"种类"); m_list.InsertColumn(3,"价格"); m_list.InsertColumn(4,"备注"); RECT rect; m_list.GetWindowRect(&rect); int wid = rect.right - rect.left; m_list.SetColumnWidth(0,wid/5); m_list.SetColumnWidth(1,wid/5); m_list.SetColumnWidth(2,wid/5); m_list.SetColumnWidth(3,wid/5); m_list.SetColumnWidth(4,wid/5); m_list.SetExtendedStyle(LVS_EX_FULLROWSELECT); return TRUE; // return TRUE unless you set the focus to a control // EXCEPTION: OCX Property Pages should return FALSE } void CDlgViewCP::OnBtnVcadd() { if (!UpdateData()) return; _RecordsetPtr pRst = NULL; CCPRs rs; try { TESTHR(pRst.CreateInstance(__uuidof(Recordset))); pRst->Open("CP",_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_kind, m_kind); rs.m_f_price = m_price; strcpy(rs.m_sz_detail, m_detail); COleSafeArray vaFieldlist, vaValuelist; rs.FillFieldsArray(vaFieldlist,vaValuelist); TESTHR(pRst->AddNew(vaFieldlist, vaValuelist)); pRst->Close(); } catch(_com_error& e) { AfxMessageBox(e.ErrorMessage()); return; } MessageBox("完成操作!"); CString sql; sql.Format("SELECT * FROM CP WHERE CP_NO='%s'", rs.m_sz_no); RefreshData(sql); } void CDlgViewCP::OnBtnVcdel() { if (!UpdateData()) return; CString sql_; sql_.Format("DELETE FROM CP WHERE CP_NO='%s'",m_no); _bstr_t sql = sql_; try { m_DBCnt->Execute(sql,NULL,adCmdText); } catch(_com_error& e) { AfxMessageBox(e.ErrorMessage()); return; } MessageBox("完成操作!"); OnBtnVcqry(); } void CDlgViewCP::OnBtnVcqry() { CString qry; CString col; GetDlgItemText(IDC_EDIT_VCQRY, qry); GetDlgItemText(IDC_COMBO_VCCOL, col); if ((qry.GetLength()==0) || (col.GetLength()==0)) { RefreshData("SELECT * FROM CP"); } else { CString sql; sql.Format("SELECT * FROM CP WHERE %s='%s'", col, qry); RefreshData(sql); } } void CDlgViewCP::OnBtnVcupd() { if (!UpdateData()) return; CString sql_; sql_.Format("SELECT * FROM CP WHERE CP_NO=%s", m_no); _bstr_t sql = sql_; _RecordsetPtr pRst = NULL; CCPRs 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_kind, m_kind); rs.m_f_price = m_price; strcpy(rs.m_sz_detail, m_detail); COleSafeArray vaFieldlist, vaValuelist; rs.FillFieldsArray(vaFieldlist,vaValuelist); pRst->Update(vaFieldlist, vaValuelist); pRst->Close(); } catch(_com_error& e) { AfxMessageBox(e.ErrorMessage()); return; } MessageBox("完成操作!"); OnBtnVcqry(); } void CDlgViewCP::OnClickListCp(NMHDR* pNMHDR, LRESULT* pResult) { int i = m_list.GetSelectionMark(); m_no = m_list.GetItemText(i,0); m_name = m_list.GetItemText(i,1); m_kind = m_list.GetItemText(i,2); m_price = (float)atof(m_list.GetItemText(i,3)); m_detail = m_list.GetItemText(i,4); UpdateData(FALSE); *pResult = 0; }