📄 dlgjs.cpp
字号:
// 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);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -