⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 buymaterialview.cpp

📁 客户端服务器源码
💻 CPP
📖 第 1 页 / 共 2 页
字号:
// 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 + -