www.gusucode.com > VC++酒店业务管理系统源程序代码-源码程序 > VC++酒店业务管理系统源程序代码-源码程序\code\代码\DlgJS.cpp
//Download by http://www.NewXing.com // DlgJS.cpp : implementation file // #include "stdafx.h" #include "RMS.h" #include "DlgJS.h" #include "DataBinding.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // CDlgJS dialog extern void _tmstr(CTime&, LPTSTR); CDlgJS::CDlgJS(CWnd* pParent /*=NULL*/) : CDialog(CDlgJS::IDD, pParent) { //{{AFX_DATA_INIT(CDlgJS) m_no = _T(""); m_sum = 0.0f; m_total = 0.0f; m_date = 0; //}}AFX_DATA_INIT } void CDlgJS::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CDlgJS) DDX_Control(pDX, IDC_LIST_JSDC, m_list); DDX_Text(pDX, IDC_EDIT_JSNO, m_no); DDX_Text(pDX, IDC_EDIT_JSSUM, m_sum); DDX_Text(pDX, IDC_EDIT_JSTOTAL, m_total); DDX_DateTimeCtrl(pDX, IDC_DATETIMEPICKER_JSDATE, m_date); //}}AFX_DATA_MAP } BEGIN_MESSAGE_MAP(CDlgJS, CDialog) //{{AFX_MSG_MAP(CDlgJS) ON_BN_CLICKED(IDC_BTN_JSSAVE, OnBtnJssave) //}}AFX_MSG_MAP END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CDlgJS message handlers BOOL CDlgJS::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,"订餐日期"); RECT rect; m_list.GetWindowRect(&rect); int wid = rect.right - rect.left; m_list.SetColumnWidth(0,wid/6); m_list.SetColumnWidth(1,wid/6); m_list.SetColumnWidth(2,wid/6); m_list.SetColumnWidth(3,wid/6); m_list.SetColumnWidth(4,wid/6); m_list.SetColumnWidth(5,wid/6); m_list.SetExtendedStyle(LVS_EX_FULLROWSELECT); m_date = CTime::GetCurrentTime(); SetDlgItemText(IDC_EDIT_JSDESK, m_desk); char buf[64]; sprintf(buf, "%f", m_dz); SetDlgItemText(IDC_EDIT_JSDZ, buf); RefreshData(); return TRUE; // return TRUE unless you set the focus to a control // EXCEPTION: OCX Property Pages should return FALSE } float CDlgJS::GetPrice(LPCTSTR no) { _RecordsetPtr pRst = NULL; IADORecordBinding *picRs = NULL; //Interface Pointer declared.(VC++ Extensions) CCPRs rs; rs.m_f_price = 0.0; CString sql_; sql_.Format("SELECT * FROM CP WHERE cp_no='%s'", no); _bstr_t strSQL = sql_; pRst = m_DBCnt->Execute(strSQL, NULL, adCmdText); if (pRst->adoEOF) _com_issue_error(0x80000000); TESTHR(pRst->QueryInterface(__uuidof(IADORecordBinding),(LPVOID*)&picRs)); TESTHR(picRs->BindToRecordset(&rs)); picRs->Release(); pRst->Close(); return rs.m_f_price; } void CDlgJS::RefreshData() { m_list.DeleteAllItems(); m_list.SetRedraw(FALSE); _RecordsetPtr pRst = NULL; IADORecordBinding *picRs = NULL; //Interface Pointer declared.(VC++ Extensions) CDCRs rs; try { CString sql_; sql_.Format("SELECT * FROM DC WHERE dc_desk='%s'", m_desk); _bstr_t strSQL = sql_; TESTHR(pRst.CreateInstance(__uuidof(Recordset))); pRst->Open(strSQL,_variant_t((IDispatch *) m_DBCnt, true), adOpenKeyset, adLockOptimistic, adCmdText); TESTHR(pRst->QueryInterface(__uuidof(IADORecordBinding),(LPVOID*)&picRs)); TESTHR(picRs->BindToRecordset(&rs)); int i = 0; char buf[128]; m_sum = 0.0; while (!pRst->adoEOF) { float price = GetPrice(rs.m_sz_no); m_sum += price*rs.m_f_number; m_list.InsertItem(0, rs.m_sz_desk); m_list.SetItemText(i, 1, rs.m_sz_no); m_list.SetItemText(i, 2, rs.m_sz_name); sprintf(buf, "%f", price); m_list.SetItemText(i, 3, buf); sprintf(buf, "%f", rs.m_f_number); m_list.SetItemText(i, 4, buf); m_list.SetItemText(i, 5, rs.m_sz_date); pRst->MoveNext(); } picRs->Release(); pRst->Close(); } catch(_com_error& e) { AfxMessageBox(e.ErrorMessage()); m_list.SetRedraw(TRUE); EndDialog(0); return; } m_list.SetRedraw(TRUE); m_total = m_sum*m_dz; UpdateData(FALSE); } void CDlgJS::OnBtnJssave() { if (!UpdateData()) return; if (m_no.GetLength()==0) { MessageBox("请输入客户号!"); return; } _RecordsetPtr pRst = NULL; CJSRs rs; try { m_DBCnt->BeginTrans(); TESTHR(pRst.CreateInstance(__uuidof(Recordset))); pRst->Open("JS",_variant_t((IDispatch *) m_DBCnt, true), adOpenKeyset, adLockOptimistic, adCmdTable); strcpy(rs.m_sz_no, m_no); strcpy(rs.m_sz_desk,m_desk); rs.m_f_dz = m_dz; rs.m_f_total = m_total; _tmstr(m_date, rs.m_sz_date); COleSafeArray vaFieldlist, vaValuelist; rs.FillFieldsArray(vaFieldlist,vaValuelist); TESTHR(pRst->AddNew(vaFieldlist, vaValuelist)); pRst->Close(); CString sql_; sql_.Format("DELETE FROM DC WHERE dc_desk='%s'", m_desk); _bstr_t strSQL = sql_; m_DBCnt->Execute(strSQL, NULL, adCmdText); m_DBCnt->CommitTrans(); } catch(_com_error& e) { AfxMessageBox(e.ErrorMessage()); m_DBCnt->RollbackTrans(); return; } MessageBox("完成操作!"); EndDialog(0); }