C++物流管理系统(功能结构图+源代码+论文参考文献) 第11页

C++物流管理系统(功能结构图+源代码+论文参考文献) 第11页
图9  库存盘点模块运行界面
 设计步骤
(1)与库存盘点模块对应的类为CDInventory,它是从业务基类CDOperation直接派生而来。
 代码分析
(1)当用户向表格内录入条型码,系统自动根据条型码查询出指定商品信息,并显示出来。
void CDInventory::OnCellKillFocus()
{
 CString sCode,sSQL;
 RxRecordset rst;
 if(this->m_Grid.GetCol()==0)
 {
  sCode=m_Grid.GetItemText(m_Grid.GetRow(),0);
  sSQL.Format("SELECT * FROM 商品信息表 WHERE 条形码='%s'",sCode);
  rst.Open(sSQL,adCmdText); 
  if(rst.GetRecordCount()<1)
   return;
  m_Grid.SetItemText(m_Grid.GetRow(),1,rst.GetFieldValue("名称"));
  m_Grid.SetItemText(m_Grid.GetRow(),2,rst.GetFieldValue("规格"));
  m_Grid.SetItemText(m_Grid.GetRow(),3,rst.GetFieldValue("产地"));
  m_Grid.SetItemText(m_Grid.GetRow(),4,rst.GetFieldValue("计量单位"));
 }
}
(2)当用户更改某单元格的值时,系统自动通过提示窗口显示出适当的提示内容。这段代码可算是此类中最有特色的部分。
void CDInventory::OnCellSetFocus()
{
 RxRecordset rst;
 CString sSQL,sName,sSpec,sAddr,sCode,sStore;
 this->m_EdtStore.GetWindowText(sStore);
 sStore=ado.FieldToOtherField("仓库信息表","仓库名称",sStore,"编号",1);
 switch(this->m_Grid.GetCol()){
 case 1:
  {
   rst.Open("SELECT DISTINCT 名称,简称 from 商品信息表",adCmdText);  
   m_Grid.m_Edit.NumberOnly(false);
   m_Grid.m_Edit.PopHide=false;
   m_Grid.m_Edit.EnterNumber=0;    
   m_Grid.m_Edit.ClearAll();
   m_Grid.m_Edit.StartUpAssciation=true;
   m_Grid.m_Edit.SetRecordset(rst);
   m_Grid.m_Edit.SetSelectField("名称");
   m_Grid.m_Edit.AutoPosition();
   break;
  }
 case 2: {
   m_Grid.m_Edit.NumberOnly(false);
   m_Grid.m_Edit.PopHide=false;
   m_Grid.m_Edit.EnterNumber=0;    
   m_Grid.m_Edit.ClearAll();
   sName=m_Grid.GetItemText(m_Grid.GetRow(),1);
   sSQL.Format("SELECT DISTINCT 名称,规格 FROM 商品信息表 \
   WHERE 名称='%s'",sName);
   rst.Open(sSQL,adCmdText);  
   m_Grid.m_Edit.StartUpAssciation=false;
   m_Grid.m_Edit.SetRecordset(rst);
   m_Grid.m_Edit.SetSelectField("规格");
   m_Grid.m_Edit.AutoPosition();
   break;
  }
 case 3: {
   m_Grid.m_Edit.NumberOnly(false);
   m_Grid.m_Edit.PopHide=false;
   m_Grid.m_Edit.EnterNumber=0;    
   m_Grid.m_Edit.ClearAll();
   sName=m_Grid.GetItemText(m_Grid.GetRow(),1);
   sSpec=m_Grid.GetItemText(m_Grid.GetRow(),2);
   sSQL.Format("SELECT DISTINCT 名称,产地 from 商品信息表 \
   WHERE 名称='%s' AND 规格='%s'",sName,sSpec);
   rst.Open(sSQL,adCmdText);  
   m_Grid.m_Edit.StartUpAssciation=false;
   m_Grid.m_Edit.SetRecordset(rst);
   m_Grid.m_Edit.SetSelectField("产地");
   m_Grid.m_Edit.AutoPosition();
   break;
  }
 case 4: {
   m_Grid.m_Edit.NumberOnly(false);
   m_Grid.m_Edit.PopHide=false;
   m_Grid.m_Edit.EnterNumber=0;    
   m_Grid.m_Edit.ClearAll();
   sName=m_Grid.GetItemText(m_Grid.GetRow(),1);
   sSpec=m_Grid.GetItemText(m_Grid.GetRow(),2);
   sAddr=m_Grid.GetItemText(m_Grid.GetRow(),3);
   sSQL.Format("SELECT * from 商品信息表 WHERE 名称='%s' AND \
   规格='%s' AND 产地='%s'",sName,sSpec,sAddr);
   rst.Open(sSQL,adCmdText);
   this->m_Grid.SetItemText(m_Grid.GetRow(),0,rst.GetFieldValue("条形码"));
   sSQL.Format("SELECT DISTINCT 名称,计量单位 from 商品信息表 \
   WHERE 名称='%s' AND 规格='%s' AND 产地='%s'",sName,sSpec,sAddr);
   rst.Open(sSQL,adCmdText);
   m_Grid.m_Edit.StartUpAssciation=false;
   m_Grid.m_Edit.SetRecordset(rst);
   m_Grid.m_Edit.SetSelectField("计量单位");
   m_Grid.m_Edit.AutoPosition();
   break;
  }
 case 5: {
   sCode=m_Grid.GetItemText(m_Grid.GetRow(),0);
   sSQL.Format("SELECT a.名称,b.库存数量 from 商品信息表 a inner join \
   库存信息表 b on a.条形码=b.商品条形码  WHERE a.条形码='%s' \
   AND b.仓库编号=%s",sCode,sStore);
   rst.Open(sSQL,adCmdText);  
   if(rst.GetRecordCount()<1)
    m_Grid.m_Edit.SetWindowText("0");
   else
    m_Grid.m_Edit.SetWindowText(rst.GetFieldValue("库存数量"));

 << 上一页  [11] [12] [13] [14] [15] [16] [17] [18] 下一页

Copyright © 2007-2012 www.chuibin.com 六维论文网 版权所有