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

📄 buymaterialview.cpp

📁 客户端服务器源码
💻 CPP
📖 第 1 页 / 共 2 页
字号:

	UpdateData(FALSE);
//	g_pAdoServer->get_BookMark(&m_vBookMark); 
}

void CBuyMaterialView::OnBtnPrevious() 
{
	// 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->Prev();
	hr = g_pAdoServer->get_BOF(&bEmpty);
	if(bEmpty)
	{
		MessageBox("已经到记录集头部!", NULL, MB_OK);
		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::OnBtnNext() 
{
	// 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->Next();
	hr = g_pAdoServer->get_ADOEOF(&bEmpty);
	if(bEmpty)
	{
		MessageBox("已经到记录集尾部!", NULL, MB_OK);
		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();

	UpdateData(FALSE);
}

void CBuyMaterialView::OnBtnModify() 
{
	// TODO: Add your control notification handler code here
	CString str_MID;
	CString str_OID;
	BOOL blnJudge;

	str_MID = m_strMID;
	str_OID = m_strOID;
	blnJudge = m_blnStock;
	/////////////////////////

	UpdateData(TRUE);
	if(m_strOID == "")
	{
		MessageBox("记录的每个字段都不能为空!", NULL, MB_OK);
		return;
	}

	/////////////////////////// 对订单表进行查询 ///////////////////
	g_pAdoServer->get_BookMark(&m_vBookMark);  // 保存当前的记录状态
	
	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);
	}

	// 如果要修改的是M_ID 和 O_ID所对应的材料,并且,该材料以前的状态是已采购,则不进行操作
	if((str_MID == m_strMID) && (str_OID == m_strOID) && (blnJudge))
	{
		m_blnStock = blnJudge;
	}
	else // 否则,就要将仓储量改变
	{
		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->put_BookMark(m_vBookMark);
	////////////////////////////////////////////////////////////////

	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();
}

void CBuyMaterialView::OnBtnDelete() 
{
	// 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->Delete();
	g_pAdoServer->Update();

	hr = g_pAdoServer->get_ADOEOF(&bEmpty);
	if(bEmpty)
	{
		MessageBox("已经到记录集尾部!", NULL, MB_OK);
		g_pAdoServer->Last();
	}
	else
	{
		g_pAdoServer->Next();
		hr = g_pAdoServer->get_ADOEOF(&bEmpty);
		if(bEmpty)
		{
			MessageBox("已经到记录集尾部!", NULL, MB_OK);
			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();

	UpdateData(FALSE);
}

void CBuyMaterialView::OnActivateView(BOOL bActivate, CView* pActivateView, CView* pDeactiveView) 
{
	// TODO: Add your specialized code here and/or call the base class
	if(bActivate == FALSE)
	{
		HRESULT hr;
		VARIANT_BOOL bEmpty;
		hr = g_pAdoServer->get_Empty(&bEmpty);

		if(bEmpty)
		{
			return;
		}
		else
		{
			g_pAdoServer->get_BookMark(&m_vBookMark);
			return;
		}
	}
	else
	{
		g_pAdoServer->CloseRecordset();
		g_pAdoServer->OpenRecordset(m_strSql);

	//	OnBtnFind();
		HRESULT hr;
		VARIANT_BOOL bEmpty;
		hr = g_pAdoServer->get_Empty(&bEmpty);

		if(bEmpty)
		{
			return;
		}
		else
		{
			g_pAdoServer->put_BookMark(m_vBookMark);
		}

		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);
	}

	CFormView::OnActivateView(bActivate, pActivateView, pDeactiveView);
}

void CBuyMaterialView::OnBtnQuery() 
{
	// TODO: Add your control notification handler code here
	HRESULT hr;
	IGxp_adoQueryPtr  pQuery;
	MULTI_QI MultiQI;
	
	MultiQI.hr = NOERROR;	MultiQI.pItf = NULL;	
	MultiQI.pIID = &__uuidof(IGxp_adoQuery);	
	

	hr = CoCreateInstanceEx( __uuidof(Gxp_adoQuery), NULL, CLSCTX_LOCAL_SERVER, NULL, 1, &MultiQI);
	
	if(SUCCEEDED(hr))
	{
		pQuery = (IGxp_adoQuery *)MultiQI.pItf;
		//MessageBox(NULL,"CoCreateInstance Successful.",NULL,MB_OK);
	}
	else
	{
		MessageBox("CoCreateInstance Failed","Client Error:",MB_OK);
		return ;
	}
	
	IDispatch* pDisp;

	// 下面是一系列的处理过程,包括了调用通用查询对话框,处理字符串等
	string strSpace = " where ";
	string strSource;
	string strResult;

	hr = g_pAdoServer->raw_GetRs(_variant_t(m_strVSql), &pDisp);
	strResult = pQuery->GetQuery(pDisp);
	
	if(strResult.empty())
	{
		m_strPSql = m_strVSql;
		return;
	}
	strSource = m_strVSql;
	strResult = strSource + strSpace + strResult;
	_bstr_t strDest(strResult.c_str());
	m_strPSql = strDest;
	
	hr = g_pAdoServer->raw_GetRs(_variant_t(strDest), &pDisp);
	m_grdViewAll.SetRefDataSource(pDisp);	
}

void CBuyMaterialView::OnBtnPrint() 
{
	// TODO: Add your control notification handler code here
	CCommPrintDlg  printDlg;
	printDlg.m_strSql = m_strPSql;
	printDlg.DoModal();
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -