📄 buymaterialview.cpp
字号:
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 + -