📄 buymaterialview.cpp
字号:
// BuyMaterialView.cpp : implementation file
//
#include "stdafx.h"
#include "clientmain.h"
#include "BuyMaterialView.h"
#include "CommPrintDlg.h"
#include <string>
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
using namespace std;
/////////////////////////////////////////////////////////////////////////////
// CBuyMaterialView
IMPLEMENT_DYNCREATE(CBuyMaterialView, CFormView)
CBuyMaterialView::CBuyMaterialView()
: CFormView(CBuyMaterialView::IDD)
{
//{{AFX_DATA_INIT(CBuyMaterialView)
m_nNumber = 0;
m_nOOS = 0;
m_datePlane = _T("");
m_dateStock = _T("");
m_strOID = _T("");
m_strMID = _T("");
m_blnStock = FALSE;
//}}AFX_DATA_INIT
m_strSql = L"select * from T_Stock";
m_strVSql = L"select * from V_Stock";
m_strPSql = m_strVSql;
}
CBuyMaterialView::~CBuyMaterialView()
{
}
void CBuyMaterialView::DoDataExchange(CDataExchange* pDX)
{
CFormView::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CBuyMaterialView)
DDX_Control(pDX, IDC_BTN_PRINT, m_btnPrint);
DDX_Control(pDX, IDC_BTN_QUERY, m_btnQuery);
DDX_Control(pDX, IDC_COMBO_OID, m_cmbOID);
DDX_Control(pDX, IDC_BTN_VIEW, m_btnViewAll);
DDX_Control(pDX, IDC_BTN_PREVIOUS, m_btnPrev);
DDX_Control(pDX, IDC_BTN_NEXT, m_btnNext);
DDX_Control(pDX, IDC_BTN_MODIFY, m_btnModify);
DDX_Control(pDX, IDC_BTN_LAST, m_btnLast);
DDX_Control(pDX, IDC_BTN_FIRST, m_btnFirst);
DDX_Control(pDX, IDC_BTN_FIND, m_btnFind);
DDX_Control(pDX, IDC_BTN_DELETE, m_btnDel);
DDX_Control(pDX, IDC_BTN_CANCEL, m_btnCancel);
DDX_Control(pDX, IDC_BTN_ADD, m_btnAddNew);
DDX_Text(pDX, IDC_EDIT_NUMBER, m_nNumber);
DDX_Text(pDX, IDC_EDIT_OOS, m_nOOS);
DDX_Text(pDX, IDC_EDIT_PLANDATE, m_datePlane);
DDX_Text(pDX, IDC_EDIT_STOCKDATE, m_dateStock);
DDX_Control(pDX, IDC_GRID_VIEWALL, m_grdViewAll);
DDX_CBString(pDX, IDC_COMBO_OID, m_strOID);
DDX_Text(pDX, IDC_EDIT_MID, m_strMID);
DDX_Check(pDX, IDC_CHECK_STOCK, m_blnStock);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CBuyMaterialView, CFormView)
//{{AFX_MSG_MAP(CBuyMaterialView)
ON_BN_CLICKED(IDC_BTN_FIND, OnBtnFind)
ON_BN_CLICKED(IDC_BTN_ADD, OnBtnAdd)
ON_BN_CLICKED(IDC_BTN_MODIFY, OnBtnModify)
ON_BN_CLICKED(IDC_BTN_DELETE, OnBtnDelete)
ON_BN_CLICKED(IDC_BTN_CANCEL, OnBtnCancel)
ON_BN_CLICKED(IDC_BTN_FIRST, OnBtnFirst)
ON_BN_CLICKED(IDC_BTN_PREVIOUS, OnBtnPrevious)
ON_BN_CLICKED(IDC_BTN_NEXT, OnBtnNext)
ON_BN_CLICKED(IDC_BTN_LAST, OnBtnLast)
ON_BN_CLICKED(IDC_BTN_VIEW, OnBtnView)
ON_BN_CLICKED(IDC_BTN_QUERY, OnBtnQuery)
ON_BN_CLICKED(IDC_BTN_PRINT, OnBtnPrint)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CBuyMaterialView diagnostics
#ifdef _DEBUG
void CBuyMaterialView::AssertValid() const
{
CFormView::AssertValid();
}
void CBuyMaterialView::Dump(CDumpContext& dc) const
{
CFormView::Dump(dc);
}
#endif //_DEBUG
/////////////////////////////////////////////////////////////////////////////
// CBuyMaterialView message handlers
void CBuyMaterialView::OnInitialUpdate()
{
CFormView::OnInitialUpdate();
// TODO: Add your specialized code here and/or call the base class
CString strTitle ;
strTitle = "材料采购管理";
GetParentFrame()->SetWindowText(strTitle);
_bstr_t strOrder("select Distinct O_ID from T_Orders");
CString strField = "O_ID";
CClientMainApp::InitCmbBox(strOrder, strField, &m_cmbOID);
m_btnAddNew.SetIcon(AfxGetApp()->LoadIcon(IDI_ADDNEW));
m_btnModify.SetIcon(AfxGetApp()->LoadIcon(IDI_MODIFY));
m_btnDel.SetIcon(AfxGetApp()->LoadIcon(IDI_DELETE));
m_btnCancel.SetIcon(AfxGetApp()->LoadIcon(IDI_CANCEL));
m_btnFirst.SetIcon(AfxGetApp()->LoadIcon(IDI_FIRST));
m_btnPrev.SetIcon(AfxGetApp()->LoadIcon(IDI_PREVIOUS));
m_btnNext.SetIcon(AfxGetApp()->LoadIcon(IDI_NEXT));
m_btnLast.SetIcon(AfxGetApp()->LoadIcon(IDI_LAST));
m_btnViewAll.SetIcon(AfxGetApp()->LoadIcon(IDI_VIEWALL));
m_btnFind.SetIcon(AfxGetApp()->LoadIcon(IDI_FIND));
m_btnQuery.SetIcon(AfxGetApp()->LoadIcon(IDI_QUERY));
m_btnPrint.SetIcon(AfxGetApp()->LoadIcon(IDI_PRINT));
GetParentFrame()->ShowWindow(SW_SHOWMAXIMIZED);
}
void CBuyMaterialView::OnBtnFirst()
{
// TODO: Add your control notification handler code here
//g_pAdoServer->OpenRecordset();
HRESULT hr;
VARIANT_BOOL bEmpty;
hr = g_pAdoServer->get_Empty(&bEmpty);
if(bEmpty)
{
MessageBox("当前记录集为空!", "Client Error:", MB_OK);
return;
}
g_pAdoServer->First();
string strOID;
string strMID;
string strPlanDate;
string strStockDate;
strOID = (_bstr_t)g_pAdoServer->Field["O_ID"];
strMID = (_bstr_t)g_pAdoServer->Field["M_ID"];
strPlanDate = (_bstr_t)g_pAdoServer->Field["PlanDate"];
strStockDate = (_bstr_t)g_pAdoServer->Field["RealDate"];
m_nOOS = g_pAdoServer->Field["OOS"];
m_nNumber = g_pAdoServer->Field["Numbers"];
m_blnStock = abs((VARIANT_BOOL)g_pAdoServer->Field["Stocked"]);
m_strOID = strOID.c_str();
m_strMID = strMID.c_str();
m_datePlane = strPlanDate.c_str();
m_dateStock = strStockDate.c_str();
UpdateData(FALSE);
}
void CBuyMaterialView::OnBtnAdd()
{
// TODO: Add your control notification handler code here
UpdateData(TRUE);
if(m_strOID == "")
{
MessageBox("记录的每个字段都不能为空!", NULL, MB_OK);
return;
}
/////////////////////////// 对订单表进行查询 ///////////////////
string strMID;
CString str;
long nBuy;
g_pAdoServer->CloseRecordset();
_bstr_t strSql("select * from T_Orders where O_ID = '" + m_strOID + "'");
g_pAdoServer->OpenRecordset(strSql);
strMID = (_bstr_t)g_pAdoServer->Field["M_ID"];
nBuy = g_pAdoServer->Field["Quantity"];
m_strMID = strMID.c_str();
//////开始对 仓储表 进行操作 ///////////////////////////////////
g_pAdoServer->CloseRecordset();
strSql = "select * from T_Storage where M_ID = '" + m_strMID + "'";
g_pAdoServer->OpenRecordset(strSql);
HRESULT hr;
VARIANT_BOOL bEmpty;
long nTotal;
hr = g_pAdoServer->get_Empty(&bEmpty);
if(bEmpty)
{
MessageBox("库中没有该材料!", NULL, MB_OK);
return;
}
nTotal = g_pAdoServer->Field["Total"];
// 得到缺货数量
m_nOOS = nTotal - nBuy;
if(m_nOOS >= 0)
{
m_nOOS = 0;
}
else
{
m_nOOS = abs(m_nOOS);
}
if(m_blnStock)
{
nTotal += m_nNumber - m_nOOS;
g_pAdoServer->Field["Total"] = nTotal;
g_pAdoServer->Update();
}
g_pAdoServer->CloseRecordset();
g_pAdoServer->OpenRecordset(m_strSql);
////////////////////////////////////////////////////////////////
g_pAdoServer->AddNew();
g_pAdoServer->Field["O_ID"] = LPCSTR(m_strOID);
g_pAdoServer->Field["M_ID"] = LPCSTR(m_strMID);
g_pAdoServer->Field["OOS"] = m_nOOS;
g_pAdoServer->Field["Numbers"] = m_nNumber;
g_pAdoServer->Field["PlanDate"] = LPCSTR(m_datePlane);
g_pAdoServer->Field["RealDate"] = LPCSTR(m_dateStock);
g_pAdoServer->Field["Stocked"] = (VARIANT_BOOL)m_blnStock;
g_pAdoServer->Update();
UpdateData(FALSE);
}
void CBuyMaterialView::OnBtnView()
{
// TODO: Add your control notification handler code here
HRESULT hr;
IDispatch* pDisp;
_bstr_t strSql("Select * from T_Stock");
//strSql = L"Select * from T_";
hr = g_pAdoServer->raw_GetRs(_variant_t(strSql), &pDisp);
//g_pAdoServer->GetRs();
m_grdViewAll.SetRefDataSource(pDisp);
}
void CBuyMaterialView::OnBtnCancel()
{
// TODO: Add your control notification handler code here
g_pAdoServer->CancelUpdate();
}
void CBuyMaterialView::OnBtnFind()
{
// TODO: Add your control notification handler code here
UpdateData(TRUE);
HRESULT hr;
if(m_strOID == "")
{
MessageBox("请输入订单编号!", NULL, MB_OK);
return;
}
VARIANT_BOOL bEmpty;
hr = g_pAdoServer->get_Empty(&bEmpty);
if(bEmpty)
{
MessageBox("当前记录集为空!", "Client Error:", MB_OK);
return;
}
g_pAdoServer->First();
CString strTemp;
strTemp = "O_ID = '" + m_strOID + "'";
_bstr_t strFind(strTemp);
hr = g_pAdoServer->Find(strFind);
if(SUCCEEDED(hr))
{
hr = g_pAdoServer->get_ADOEOF(&bEmpty);
if(bEmpty)
{
MessageBox("没有找到记录!", NULL, MB_OK);
return;
}
string strMID;
string strPlanDate;
string strStockDate;
strMID = (_bstr_t)g_pAdoServer->Field["M_ID"];
strPlanDate = (_bstr_t)g_pAdoServer->Field["PlanDate"];
strStockDate = (_bstr_t)g_pAdoServer->Field["RealDate"];
m_nOOS = g_pAdoServer->Field["OOS"];
m_nNumber = g_pAdoServer->Field["Numbers"];
m_blnStock = abs((VARIANT_BOOL)g_pAdoServer->Field["Stocked"]);
m_strMID = strMID.c_str();
m_datePlane = strPlanDate.c_str();
m_dateStock = strStockDate.c_str();
}
UpdateData(FALSE);
}
void CBuyMaterialView::OnBtnLast()
{
// TODO: Add your control notification handler code here
HRESULT hr;
VARIANT_BOOL bEmpty;
hr = g_pAdoServer->get_Empty(&bEmpty);
if(bEmpty)
{
MessageBox("当前记录集为空!", "Client Error:", MB_OK);
return;
}
g_pAdoServer->Last();
string strOID;
string strMID;
string strPlanDate;
string strStockDate;
strOID = (_bstr_t)g_pAdoServer->Field["O_ID"];
strMID = (_bstr_t)g_pAdoServer->Field["M_ID"];
strPlanDate = (_bstr_t)g_pAdoServer->Field["PlanDate"];
strStockDate = (_bstr_t)g_pAdoServer->Field["RealDate"];
m_nOOS = g_pAdoServer->Field["OOS"];
m_nNumber = g_pAdoServer->Field["Numbers"];
m_blnStock = abs((VARIANT_BOOL)g_pAdoServer->Field["Stocked"]);
m_strOID = strOID.c_str();
m_strMID = strMID.c_str();
m_datePlane = strPlanDate.c_str();
m_dateStock = strStockDate.c_str();
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -