www.gusucode.com > VC++酒店业务管理系统源程序代码-源码程序 > VC++酒店业务管理系统源程序代码-源码程序\code\代码\DlgDC.cpp
// DlgDC.cpp : implementation file //Download by http://www.NewXing.com #include "stdafx.h" #include "RMS.h" #include "DlgDC.h" #include "DataBinding.h" #pragma warning(push) #pragma warning(disable: 4786) #pragma warning(disable: 4503) #include <map> #include <string> using namespace std; typedef map<string, string> CPMap; CPMap cpmap; #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // CDlgDC dialog CDlgDC::CDlgDC(CWnd* pParent /*=NULL*/) : CDialog(CDlgDC::IDD, pParent) { //{{AFX_DATA_INIT(CDlgDC) m_number = 0.0f; m_desk = _T(""); m_date = 0; m_name = _T(""); //}}AFX_DATA_INIT } void CDlgDC::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CDlgDC) DDX_Control(pDX, IDC_COMBO_DCNOS, m_nos); DDX_Control(pDX, IDC_LIST_DC, m_list); DDX_Text(pDX, IDC_EDIT_DCNUMBER, m_number); DDV_MinMaxFloat(pDX, m_number, 1.f, 10000.f); DDX_Text(pDX, IDC_EDIT_DCDESK, m_desk); DDX_DateTimeCtrl(pDX, IDC_DATETIMEPICKER_DCDATE, m_date); DDX_Text(pDX, IDC_EDIT_DCNAME, m_name); //}}AFX_DATA_MAP } BEGIN_MESSAGE_MAP(CDlgDC, CDialog) //{{AFX_MSG_MAP(CDlgDC) ON_BN_CLICKED(IDC_BTN_DCADD, OnBtnDcadd) ON_BN_CLICKED(IDC_BTN_DCCMT, OnBtnDccmt) ON_BN_CLICKED(IDC_BTN_DCDEL, OnBtnDcdel) ON_BN_CLICKED(IDC_BTN_DCUPD, OnBtnDcupd) ON_NOTIFY(NM_CLICK, IDC_LIST_DC, OnClickListDc) ON_CBN_CLOSEUP(IDC_COMBO_DCNOS, OnCloseupComboDcnos) //}}AFX_MSG_MAP END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CDlgDC message handlers void _tmstr(CTime& tm, LPTSTR buf) { sprintf(buf, "%d-%d-%d", tm.GetYear(), tm.GetMonth(), tm.GetDay()); } void _strtm(LPCTSTR buf, CTime& tm) { int year, month, day; sscanf(buf, "%d-%d-%d", &year, &month, &day); tm = CTime(year, month, day, 0,0,0); } BOOL CDlgDC::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); m_date = CTime::GetCurrentTime(); UpdateData(FALSE); _RecordsetPtr pRst = NULL; IADORecordBinding *picRs = NULL; //Interface Pointer declared.(VC++ Extensions) CCPRs rs; try { _bstr_t strSQL("SELECT * FROM CP"); pRst = m_DBCnt->Execute(strSQL, NULL, adCmdText); TESTHR(pRst->QueryInterface(__uuidof(IADORecordBinding),(LPVOID*)&picRs)); TESTHR(picRs->BindToRecordset(&rs)); int i = 0; // 清空cpmap cpmap.clear(); while (!pRst->adoEOF) { m_nos.AddString(rs.m_sz_no); // 向cpmap中添加一个[菜谱号-菜名]映射 cpmap.insert(CPMap::value_type(string(rs.m_sz_no), string(rs.m_sz_name))); pRst->MoveNext(); } picRs->Release(); pRst->Close(); } catch(_com_error& e) { AfxMessageBox(e.ErrorMessage()); return TRUE; } return TRUE; // return TRUE unless you set the focus to a control // EXCEPTION: OCX Property Pages should return FALSE } void CDlgDC::OnBtnDcadd() { if (!UpdateData()) return; if (m_desk.GetLength()==0) { MessageBox("请输入桌号!"); return; } if (m_name.GetLength()==0) { MessageBox("请选择一样菜!"); return; } char buf[128]; m_list.InsertItem(0, m_desk); m_nos.GetWindowText(buf, 128); m_list.SetItemText(0, 1, buf); m_list.SetItemText(0, 2, m_name); sprintf(buf, "%f", m_number); m_list.SetItemText(0, 3, buf); _tmstr(m_date, buf); m_list.SetItemText(0, 4, buf); } void CDlgDC::OnBtnDccmt() { _RecordsetPtr pRst = NULL; CDCRs rs; try { TESTHR(pRst.CreateInstance(__uuidof(Recordset))); pRst->Open("DC",_variant_t((IDispatch *) m_DBCnt, true), adOpenKeyset, adLockOptimistic, adCmdTable); while (m_list.GetItemCount()>0) { m_list.GetItemText(0,0, rs.m_sz_desk, sizeof(rs.m_sz_desk)); m_list.GetItemText(0,1, rs.m_sz_no, sizeof(rs.m_sz_no)); m_list.GetItemText(0,2, rs.m_sz_name, sizeof(rs.m_sz_name)); rs.m_f_number = (float)atof(m_list.GetItemText(0,3)); m_list.GetItemText(0,4, rs.m_sz_date, sizeof(rs.m_sz_date)); COleSafeArray vaFieldlist, vaValuelist; rs.FillFieldsArray(vaFieldlist,vaValuelist); TESTHR(pRst->AddNew(vaFieldlist, vaValuelist)); m_list.DeleteItem(0); } pRst->Close(); } catch(_com_error& e) { AfxMessageBox(e.ErrorMessage()); return; } MessageBox("完成操作!"); } void CDlgDC::OnBtnDcdel() { int i = m_list.GetSelectionMark(); if (i<0) return; m_list.DeleteItem(i); m_list.SetSelectionMark(0); } void CDlgDC::OnBtnDcupd() { OnBtnDcdel(); OnBtnDcadd(); } void CDlgDC::OnClickListDc(NMHDR* pNMHDR, LRESULT* pResult) { int i = m_list.GetSelectionMark(); char buf[128]; m_desk = m_list.GetItemText(i,0); m_list.GetItemText(i, 1, buf, 128); m_nos.SelectString(0, buf); m_name = m_list.GetItemText(i,2); m_number = (float)atof(m_list.GetItemText(i,3)); _strtm(m_list.GetItemText(i,4), m_date); UpdateData(FALSE); *pResult = 0; } void CDlgDC::OnCloseupComboDcnos() { char buf[128]; m_nos.GetWindowText(buf, 128); CPMap::const_iterator it = cpmap.find(string(buf)); if (it!=cpmap.end()) { string name = (*it).second; GetDlgItem(IDC_EDIT_DCNAME)->SetWindowText(name.data()); } }