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] 下一页