📄 deskdlg.cpp
字号:
// DeskDlg.cpp : implementation file
//
#include "stdafx.h"
#include "MenuManage.h"
#include "DeskDlg.h"
#include "PayDlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
extern CMenuManageApp theApp;
/////////////////////////////////////////////////////////////////////////////
// CDeskDlg dialog
CDeskDlg::CDeskDlg(CWnd* pParent /*=NULL*/)
: CDialog(CDeskDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CDeskDlg)
m_nOrderDeskNumber = 0;
m_nOrderFoodNumber = 0;
m_nOrderRebate = 100;
m_nOrderFoodAcount = 1;
//}}AFX_DATA_INIT
}
void CDeskDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CDeskDlg)
DDX_Control(pDX, IDC_DATAGRID_FOOD, m_dbFood);
DDX_Text(pDX, IDC_ORDER_DESK_NUMBER, m_nOrderDeskNumber);
DDX_Text(pDX, IDC_ORDER_FOOD_NUM, m_nOrderFoodNumber);
DDX_Text(pDX, IDC_ORDER_REBATE, m_nOrderRebate);
DDX_Text(pDX, IDC_EDIT_FOOD_ACOUNT, m_nOrderFoodAcount);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CDeskDlg, CDialog)
//{{AFX_MSG_MAP(CDeskDlg)
ON_BN_CLICKED(IDC_ORDER_BTN, OnOrderBtn)
ON_EN_UPDATE(IDC_ORDER_DESK_NUMBER, OnUpdateOrderDeskNumber)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CDeskDlg message handlers
void CDeskDlg::OnOrderBtn()
{
// TODO: Add your control notification handler code here
UpdateData(TRUE);
CString str;
CString sql;
if(m_nOrderDeskNumber == 0)
{
AfxMessageBox("请输入餐桌编号");
return;
}
if(m_nOrderFoodNumber != 0 )
{
//-----根据食物编号从menu表中获取食物的价格和名称------------------------//
str.Format("%d",m_nOrderFoodNumber);
sql = "SELECT * FROM MenuInfo WHERE FoodNum = "+str+" ";
m_pRecordset_Menu.CreateInstance("ADODB.Recordset");
m_pRecordset_Menu->Open((_variant_t)sql,_variant_t((IDispatch *)theApp.m_pConnection,true),adOpenDynamic,adLockPessimistic,adCmdText);
if(m_pRecordset_Menu->GetRecordCount()==0)
{
AfxMessageBox("该菜肴编号不存在,请重新输入编号");
return;
}
else
{
int m_nTempPrice;
CString m_strTempName;
m_nTempPrice = m_pRecordset_Menu->GetCollect("FoodPrice").lVal;//食物价格
m_strTempName = m_pRecordset_Menu->GetCollect("FoodName").bstrVal;//食物名称
m_pRecordset_Menu->Close();
//------根据餐桌号向order表中添加桌号、食物编号、价格、折扣、折后价格、名称--//
//-----是否结帐默认为0----------------//
str.Format("%d",m_nOrderDeskNumber);//桌子编号
sql = "SELECT * FROM OrderInfo WHERE DeskNum = "+str+" ";
m_pRecordset_Order.CreateInstance("ADODB.Recordset");
m_pRecordset_Order->Open((_variant_t)sql,_variant_t((IDispatch *)theApp.m_pConnection,true),adOpenDynamic,adLockPessimistic,adCmdText);
m_pRecordset_Order->AddNew();
str.Format("%d",m_nOrderDeskNumber);
m_pRecordset_Order->PutCollect("DeskNum" ,_variant_t(str));//餐桌编号
str.Format("%d" , m_nOrderFoodNumber);
m_pRecordset_Order->PutCollect("FoodNum" ,_variant_t(str));//食物编号
str.Format("%d",m_nTempPrice);
m_pRecordset_Order->PutCollect("FoodSignalPrice" ,_variant_t(str));//食物单价
str.Format("%d",m_nOrderFoodAcount);
m_pRecordset_Order->PutCollect("FoodAcount" ,_variant_t(str));//食物数量
m_nTempPrice *=m_nOrderFoodAcount;
str.Format("%d",m_nTempPrice);
m_pRecordset_Order->PutCollect("FoodPrice" ,_variant_t(str));//食物价格
str.Format("%d",m_nOrderRebate);
m_pRecordset_Order->PutCollect("FoodRebate" ,_variant_t(str));//食物折扣
int m_nTempRePrice;
m_nTempRePrice = (int)m_nTempPrice*m_nOrderRebate/100;
str.Format("%d",m_nTempRePrice);
m_pRecordset_Order->PutCollect("FoodRePrice" ,_variant_t(str)); //折后价格(小计)
m_pRecordset_Order->PutCollect("FoodName" ,_variant_t(m_strTempName));//食物名称
int m_nTempCheck;
m_nTempCheck = 0;
str.Format("%d",m_nTempCheck);
m_pRecordset_Order->PutCollect("FoodCheck" ,_variant_t(str));//是否结帐
CString paytime;
CTime now=CTime::GetCurrentTime();
paytime=now.Format(_T("%Y-%m-%d %H:%M:%S"));
m_pRecordset_Order->PutCollect("FoodTime",_variant_t(paytime));//点菜时间
m_pRecordset_Order->Update();
m_pRecordset_Order ->Close();
//------重新打开order表,挑选相应桌号未结帐的食物,与表格绑定--------------------------------------------//
str.Format("%d",m_nOrderDeskNumber);
CString str1;
str1.Format("%d" , 0);
sql = "SELECT * FROM OrderInfo WHERE DeskNum = "+str+" and FoodCheck = "+str1+" ";
m_pRecordset_Order.CreateInstance("ADODB.Recordset");
m_pRecordset_Order->Open((_variant_t)sql,_variant_t((IDispatch *)theApp.m_pConnection,true),adOpenDynamic,adLockPessimistic,adCmdText);
m_dbFood.SetRefDataSource(NULL);
m_dbFood.SetRefDataSource((LPUNKNOWN)m_pRecordset_Order);
m_dbFood.SetColumnHeaders(2) ;
m_dbFood.Refresh();
GetDlgItem(IDOK)->EnableWindow(TRUE);
}
}
else
{
AfxMessageBox("请输入菜肴编号");
return;
}
}
BOOL CDeskDlg::OnInitDialog()
{
CDialog::OnInitDialog();
// TODO: Add extra initialization here
GetDlgItem(IDOK)->EnableWindow(FALSE);
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void CDeskDlg::OnOK()
{
// TODO: Add extra validation here
CString str,sql,str1;
//计算总金额
int m_nTempRePrice;
m_nTotalPrice = 0;
while(!m_pRecordset_Order -> adoEOF)
{
m_nTempRePrice=m_pRecordset_Order->GetCollect("FoodRePrice").lVal;
m_nTotalPrice += m_nTempRePrice;
m_pRecordset_Order->MoveNext();//指针下移
}
if(m_nTotalPrice>0)
{//-----根据餐桌号向desk表中添加桌号、总金额、是否结帐默认为0---------//
int temp=0;
str1.Format("%d",temp);
str.Format("%d",m_nOrderDeskNumber);
sql = "SELECT * FROM DeskInfo WHERE DeskNum = "+str+" and DeskCheck = "+str1+"";
m_pRecordset_Desk.CreateInstance("ADODB.Recordset");
m_pRecordset_Desk->Open((_variant_t)sql,
_variant_t((IDispatch *)theApp.m_pConnection,true),
adOpenDynamic,
adLockPessimistic,
adCmdText);
if(m_pRecordset_Desk->GetRecordCount()==0)
{
m_pRecordset_Desk->AddNew();
str.Format("%d",m_nOrderDeskNumber);
m_pRecordset_Desk->PutCollect("DeskNum",(_variant_t)str);
str.Format("%d",m_nTotalPrice);
m_pRecordset_Desk->PutCollect("DeskPrice",(_variant_t)str);
temp = 0;
str.Format("%d" , temp);
m_pRecordset_Desk->PutCollect("DeskCheck",(_variant_t)str);
}
else
{
str.Format("%d",m_nTotalPrice);
m_pRecordset_Desk->PutCollect("DeskPrice",(_variant_t)str);
}
m_pRecordset_Desk->Update();
m_pRecordset_Desk->Close();
}
//-----------------------------------//
CDialog::OnOK();
}
void CDeskDlg::OnUpdateOrderDeskNumber() //根据餐桌号自动绑定原来已点的菜
{
// TODO: Add your control notification handler code here
UpdateData(TRUE);
CString str,sql;
str.Format("%d",m_nOrderDeskNumber);
CString str1;
int temp=0;
str1.Format("%d" , temp);
sql = "SELECT * FROM OrderInfo WHERE DeskNum = "+str+" and FoodCheck = "+str1+" ";
m_pRecordset_Order.CreateInstance("ADODB.Recordset");
m_pRecordset_Order->Open((_variant_t)sql,_variant_t((IDispatch *)theApp.m_pConnection,true),adOpenDynamic,adLockPessimistic,adCmdText);
m_dbFood.SetRefDataSource(NULL);
m_dbFood.SetRefDataSource((LPUNKNOWN)m_pRecordset_Order);
m_dbFood.SetColumnHeaders(2) ;
m_dbFood.Refresh();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -