版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
{仓库规范管理}计算机毕业设计仓库管理系统仓库管理系统设计和程序实现过程。1、系统设计1、1系统设计目标系统开发的总统任务是实现企业物资设备管理的系统化、规范化和自动化,从而达到仓库管理效率的目的。1、2开发设计思想在本系统的设计过程中,为了克服仓库管理信息处理量大的困难,满足计算机管理的需要,采取了下面的一些原则:●●统一各种原始单据的格式,统一帐目和报表的格式。●●删除不必要的管理冗余,实现管理规范化、科学化。●●程序代码标准化,软件统一化,确保软件的可维护性和实用性。●●界面尽量简单化,做到实用、方便,尽量满足企业不同层次员工的需要。●●建立操作日志,系统自动记录所进行的各种操作。
1、3系统功能分析本例中的仓库管理系统需要完成的功能主要有以下几点:●●仓库管理各种信息的输入,包括入库、出库、还库、需求信息的输入等。●●仓库管理各种信息的查询、修改和维护。●●设备采购报表的生成。●●在库存管理中加入最高储备和最低储备字段,对仓库中的物资设备实现监控和报警。●●企业各部门的物资需求的管理。●●操作日志的管理。●●仓库管理系统的使用帮助。
1、4系统功能模块设计在系统功能分析的基础上,结合VisualC++程序编制的特点,得到如图1-1所示的系统功能模块图。图1-1系统2、数据库设计2、1数据库分析系输维查报在仔细企业仓库物备管理过程础上,得到本所处理的数据如图1-2所示:帮统入护看表助本实例设计的数据项和数据结构如下:●●设备代码信息,包括的数据项有设备号、设备名称。●●库存信息,的设备、现目、总数目大库存和最小库入出还需日存●●使用信息,的数据使用的设使用部门、、使用时间和出库库库求志库态等。●●设备采购信息,包括的数据项有采购的设备、采购员、供应商、采购数目和采购时间等。●●设备归还信息,包括的数据项有归还设备、归还部门、归还数目、归还时间和经手人等。●●设备需求信息,包括的数据项有需求的部门、需求设备、需求数目和需求时间等。2、2数据库概念结构设计库实体和需求实体,各实体的E-R图及其关系描述如下:图1-3库存实体E-R图图1-4入库实体E-R图图1-5出库实体E-R图设备号供应商信息采购价格数量采购员图1-7还库实体E-R图图1-8计划采购实体E-R图图1-9实体和实体之间的关系E-R图2、3数设备号构设计需求部门需求数量需求时间据库中的一个表。表1-1设备代码表device_code列名数据类型可否为空说明VAL号(主键)设备号库存信息供应信息时间nameVARCHAR2(20)NULL设备名称表1-2设备入库表device_in列名数据类型可否为空说明codeVARCHAR2(6)NOTNULL设备号in_dateDATENOTNULL入库时间(主键)providerVARCHAR2(20)NULL供应商telenoVARCHAR2(10)NULL供应商电话in_numberNUMBER(6)NULL入库数量priceNUMBER(6)NULL价格buyerVARCHAR2(10)NULL采购员表1-3设备出库表device_out列名数据类型可否为空说明codeVARCHAR2(6)NOTNULL设备号departmentVARCHAR2(20)NULL使用部门out_dateDATENULL出库时间(主键)out_stateNUMBER(1)NULL出库状态out_personVARCHAR2(10)NULL经手人out_numberNUMBER(6)NOTNULL出库数量takerVARCHAR2(10)NULL领取人usageVARCHAR2(20)NULL用途
表1-4现有库存表device列名数据类型可否为空说明
codeVARCHAR2(6)NOTNULL设备号(主键)
now_numberNUMBER(6)NULL现有库存
high_numberNUMBER(6)NULL最大库存
low_numberNUMBER(6)NULL最少库存
total_numberNUMBER(6)NULL总数
表1-5部门需求表device_need列名数据类型可否为空说明
codeVARCHAR2(6)NOTNULL设备号
departmentVARCHAR2(20)NOTNULL部门名称
need_numberNUMBER(6)NULL需求数量
begin_dateDATENULL需求开始时间
end_dateDATENULL需求结束时间
表1-6设备还库表device_return列名数据类型可否为空说明
codeVARCHAR2(6)NOTNULL设备号
return_dateDATENULL还库时间(主键)
keeperVARCHAR2(20)NULL仓库管理员
return_numberNUMBER(6)NULL归还数量
return_dateVARCHAR2(10)NULL归还人
表1-7操作日志表howdo列名数据类型可否为空说明
do_userVARCHAR2(10)NOTNULL操作员
do_whatVARCHAR2(40)NOTNULL操作内容
do_dateDATENOTNULL操作时间
表1-8设备采购计划表device_wantbuy列名数据类型可否为空说明
codeVARCHAR2(6)NOTNULL设备号
now_numberNUMBER(6)NULL现有库存
total_numberNUMBER(6)NULL总库存
max_numberNUMBER(6)NULL最大库存
buy_numberNUMBER(6)NULL购买数量
providerVARCHAR2(10)NULL供应商
priceNUMBER(6)NULL价格
buy_dateDATENULL3、数据库结构的实现4、创建应用程序(1)(1)选择“FileNew”中的“新建项目”选项卡中“MFCAppWizard(exe,
设置合适的目录和项目名,比如“E:\Project”目录下的“DMS”项目。(2)(2)创建一个对话框应用程序(“DialogBased”Next”按钮。
(3)(3ADOMFCAppWizard选中“选项,使应用程序能够支持自动化对象。如图1-10所示(4)(4)单击“Finish”按钮结束项目的创建。主对话框名为CDMSDlg。(5)(5)项目创建完毕后,在头文件stdafx.h中加入下面4行:#import“c:\programfiles\monfiles\system\ado\msado15.dll”no_namespace(”EOF”,”adoEOF”)#include”icrsint.h”inlinevoidTESTHR(HRESULTx){ifFAILED(x)__issue_error(x);};#defineDATEFMTCstring(“’%s”’)5、操作日志模块的设计(1)写日志模块图1-10使应用程序支持自动化先定义一个名为ClogMngr的类//LogMngr.h//定义一个Log管理器classCLogMngr{public:CLogMngr();virtual~CLogMngr();public:boolAddLog(LPCSTRop);voidSetup(_ConnectionPtrcnnt,CString&user){m_DBCnt=cnnt;m_user=user;}protected:_ConnectionPtrm_DBCnt;CStringm_user;};下面是ClogMngr::AddLog内部实现详细过程。////向数据库中添加Log记录的代码。boolCLogMngr::AddLog(LPCSTRop){CTimetm=CTime::GetCurrentTime();CStringsql_;sql_.Format("INSERTINTOHOWDO(do_user,do_what,do_date)VALUES('%s','%s','%d-%d-%d%d:%d:%d')",m_user,op,(),(),(),(),(),());_bstr_tsql=sql_;try{m_DBCnt->Execute(sql,NULL,adCmdText);
}catch(__error&e){CStringError=e.ErrorMessage();AfxMessageBox(e.ErrorMessage());returnfalse;}returntrue;}(2)读日志模块图1-11查看日志窗口初始化界面代码如下:BOOLCDlgViewLog::OnInitDialog(){CDialog::OnInitDialog();m_(0,"操作员");m_(1,"操作日期");m_(2,"操作内容");RECTrect;m_(&rect);intwid=-;m_(0,wid/3);m_(1,wid/3);m_(2,wid/3);m_(LVS_EX_FULLROWSELECT);RefreshData();returnTRUE;//returnTRUEunlessyousetthefocustoacontrol//EXCEPTION:OCXPropertyPagesshouldreturnFALSE}voidCDlgViewLog::RefreshData(){m_();m_(FALSE);_bstr_tstrSQL("SELECT*FROMHOWDO");
_RecordsetPtrMySet;
inti=0;try{(__uuidof(Recordset));MySet=m_DBCnt->Execute(strSQL,NULL,adCmdText);
_variant_tHolder;while(!MySet->adoEOF)
{Holder=MySet->GetCollect("do_user");
if(!=VT_NULL)m_(i,(char*)(_bstr_t)Holder);
Holder=MySet->GetCollect("do_date");
if(!=VT_NULL)m_(i,1,(char*)(_bstr_t)Holder);
Holder=MySet->GetCollect("do_what");
if(!=VT_NULL)m_(i,2,(char*)(_bstr_t)Holder);
MySet->MoveNext();}MySet->Close();}catch(__error&e){AfxMessageBox(e.ErrorMessage());m_(TRUE);return;}m_(TRUE);}voidCDlgViewLog::OnClickListVllog(NMHDR*pNMHDR,LRESULT*pResult){inti=m_();m_opr=m_(i,0);m_date=m_(i,1);m_op=m_(i,2);UpdateData(FALSE);*pResult=0;}////删除所有日志记录的函数。voidCDlgViewLog::OnBtnVlrmall(){_bstr_tstrSQL("TRUNCATETABLEHOWDO");try{m_DBCnt->Execute(strSQL,NULL,adCmdText);}catch(__error&e){AfxMessageBox(e.ErrorMessage());EndDialog(0);}RefreshData();
}6、登录窗口的设计和程序初始化在CDMSDlg::OnInitDialog()中加入这样一段代码:////弹出登录界面CDlgLogIndlg;do{if(!())EndDialog(0);}while(dlg.m_()==0);它的目的是弹出图1-12所示的登录对话框,并从中获得一个有效的用户名。图1-12登录界面得到有效用户名后,程序用如下代码:////建立数据库连接,初始化成员变量//登录数据库,若失败,则关闭程序。{m_(__uuidof(Connection));CStringsql_;sql_.Format("DSN=DMS;UID=%s;PWD=%s",dlg.m_UsrName,dlg.m_UsrPwd);_bstr_tsql=sql_;//建立连接m_DBCnt->Open(sql,"","",-1);//初始化日志管理器m_(m_DBCnt,dlg.m_UsrName);//记录此次登录m_("登录数据库");}catch(__error&e){AfxMessageBox(e.ErrorMessage());this->EndDialog(0);}在程序结束时关闭数据库连接。////关闭数据库连接voidCDMSDlg::OnDestroy(){CDialog::OnDestroy();m_DBCnt->Close();}7、主对话框界面的设计登录完成后,显示出主对话框。它的界面设计如图1-13所示,单击某个按钮就能弹出某个功能的界面。图1-13主对话框界面以其中“设备代码”按钮为例,说明它的事件处理函数。代码如下:////显示设备代码管理界面voidCDMSDlg::OnBtnDevcode(){CDlgDevcodedlg;(m_DBCnt,&m_logMngr);this->ShowWindow(SW_HIDE);();this->ShowWindow(SW_SHOW);
}其他按钮的事件处理函数,代码与“设备代码”按钮的事件处理函数相同。8、设备代码管理窗口的建立对话框类名为CdlgDevcode设计如图1-14所示图1-14设备代码管理窗口////对话框的初始化BOOLCDlgDevcode::OnInitDialog(){CDialog::OnInitDialog();//切分列表控件
m_(0,"设备号");m_(1,"设备名");RECTrect;m_(&rect);intwid=-;m_(0,wid/2);m_(1,wid/2);m_(LVS_EX_FULLROWSELECT);//读取已有数据RefreshData();returnTRUE;}////消息映射部分BEGIN_MESSAGE_MAP(CDlgDevcode,CDialog)//{{AFX_MSG_MAP(CDlgDevcode)ON_NOTIFY(NM_CLICK,IDC_LIST_DEVCODE,OnClickListDevcode)//}}AFX_MSG_MAPEND_MESSAGE_MAP()//事件处理部分voidCDlgDevcode::OnClickListDevcode(NMHDR*pNMHDR,LRESULT*pResult){inti=m_();m_code=m_(i,0);m_name=m_(i,1);UpdateData(FALSE);*pResult=0;}其余程序的清单如下://:implementationfile//#include"stdafx.h"#include"DMS.h"#include"DlgDevcode.h"#ifdef_DEBUG#definenewDEBUG_NEW#undefTHIS_FILEstaticcharTHIS_FILE[]=__FILE__;#endif//////////////////////////////////////////////////////////////////////////////CDlgDevcodedialogCDlgDevcode::CDlgDevcode(CWnd*pParent/*=NULL*/):CDialog(CDlgDevcode::IDD,pParent){//{{AFX_DATA_INIT(CDlgDevcode)
m_code=_T("");m_name=_T("");//}}AFX_DATA_INIT
m_DBCnt=NULL;m_log=NULL;}voidCDlgDevcode::DoDataExchange(CDataExchange*pDX){CDialog::DoDataExchange(pDX);//{{AFX_DATA_MAP(CDlgDevcode)DDX_Control(pDX,IDC_LIST_DEVCODE,m_list);DDX_Text(pDX,IDC_EDIT_DCCODE,m_code);DDX_Text(pDX,IDC_EDIT_DCNAME,m_name);//}}AFX_DATA_MAP}BEGIN_MESSAGE_MAP(CDlgDevcode,CDialog)//{{AFX_MSG_MAP(CDlgDevcode)ON_NOTIFY(NM_CLICK,IDC_LIST_DEVCODE,OnClickListDevcode)ON_BN_CLICKED(IDC_BTN_DCADD,OnBtnDcadd)ON_BN_CLICKED(IDC_BTN_DCDEL,OnBtnDcdel)ON_BN_CLICKED(IDC_BTN_DCUPD,OnBtnDcupd)//}}AFX_MSG_MAPEND_MESSAGE_MAP()//////////////////////////////////////////////////////////////////////////////CDlgDevcodemessagehandlers//负责读取已有数据的函数voidCDlgDevcode::RefreshData(){m_();m_(FALSE);_bstr_tstrSQL("SELECT*FROMDEVICE_CODE");_RecordsetPtrMySet;inti=0;try{(__uuidof(Recordset));//执行SOL语句读取记录
MySet=m_DBCnt->Execute(strSQL,NULL,adCmdText);
_variant_tHolder;while(!MySet->adoEOF)
{//取出code字段的数据
Holder=MySet->GetCollect("code");
if(!=VT_NULL)m_(i,(char*)(_bstr_t)Holder);//取出name字段的数据Holder=MySet->GetCollect("name");
if(!=VT_NULL)m_(i,1,(char*)(_bstr_t)Holder);
MySet->MoveNext();}}catch(__error&e){AfxMessageBox(e.ErrorMessage());m_(TRUE);return;}m_(TRUE);}//负责添加记录的函数voidCDlgDevcode::OnBtnDcadd(){UpdateData();CStringsql_;sql_.Format("INSERTINTODEVICE_CODE(code,name)VALUES('%s','%s')",m_code,m_name);_bstr_tsql=sql_;try{m_DBCnt->Execute(sql,NULL,adCmdText);}catch(__error&e){AfxMessageBox(e.ErrorMessage());return;}m_log->AddLog("添加设备记录。");RefreshData();}//负责删除记录的函数voidCDlgDevcode::OnBtnDcdel(){UpdateData();CStringsql_;sql_.Format("DELETEFROMDEVICE_CODEWHERECODE='%s'",m_code);_bstr_tsql=sql_;try{m_DBCnt->Execute(sql,NULL,adCmdText);}catch(__error&e){AfxMessageBox(e.ErrorMessage());return;}m_log->AddLog("删除设备记录。");RefreshData();
}//负责更新数据的函数voidCDlgDevcode::OnBtnDcupd(){UpdateData();CStringsql_;sql_.Format("UPDATEDEVICE_CODESETNAME='%s'WHERECODE='%s'",m_name,m_code);_bstr_tsql=sql_;try{m_DBCnt->Execute(sql,NULL,adCmdText);}catch(__error&e){AfxMessageBox(e.ErrorMessage());return;}m_log->AddLog("更新设备记录。");RefreshData();}9、库存信息管理窗口的创建按钮,将出现图1-15所示的界面。新增记录时,用户在“设备号”组合框中选择一个设备号,在下面填入各种数量,之后单击“新增”按钮即可向表中增加记录。修改记录时,用户单击列表中某一行,程序利用1、8提到的方法,在窗口下面把这一行记录的详细信息显示出来,用户即可对之修改。“设备号”这个子窗口初始化的时候有如下代码:////对话框的初始化BOOLCDlgDev::OnInitDialog(){CDialog::OnInitDialog();//切分列表控件m_(0,"设备号");m_(1,"现存数量");m_(2,"最大数量");m_(3,"最小数量");m_(4,"总数");RECTrect;m_(&rect);intwid=-;m_(0,wid/5);m_(1,wid/5);m_(2,wid/5);m_(3,wid/5);m_(4,wid/5);m_(LVS_EX_FULLROWSELECT);_RecordsetPtrpRst=NULL;IADORecordBinding*picRs=NULL;//InterfacePointerdeclared.(VC++Extensions)CDevCodeRsrs;try{_bstr_tstrSQL("SELECT*FROMDEVICE_CODE");TESTHR((__uuidof(Recordset)));//读取所有的设备编号pRst=m_DBCnt->Execute(strSQL,NULL,adCmdText);//数据绑定TESTHR(pRst->QueryInterface(__uuidof(IADORecordBinding),(LPVOID*)&picRs));TESTHR(picRs->BindToRecordset(&rs));inti=0;while(!pRst->adoEOF){//向组合框控件中添加所有的设备编号m_(rs.m_sz_code);pRst->MoveNext();}picRs->Release();pRst->Close();}catch(__error&e){AfxMessageBox(e.ErrorMessage());EndDialog(0);returnTRUE;}RefreshData();returnTRUE;//returnTRUEunlessyousetthefocustoacontrol//EXCEPTION:OCXPropertyPagesshouldreturnFALSE}图1-15库存信息管理10、设备入库信息管理在主对话框中单击“入库信息”按钮就进入如图1-16所示的界面。图1-16设备入库信息管理界面下面是修改和删除记录的代码:voidCDlgViewDevIn::OnBtnViupdate(){if(!UpdateData())return;CStringsql_;sql_.Format(CString("SELECT*FROMDEVICE_INWHEREin_date=")+DATEFMT,m_date);_bstr_tsql=sql_;_RecordsetPtrpRst=NULL;IADORecordBinding*picRs=NULL;//InterfacePointerdeclared.(VC++Extensions)CDevInRsrs;try{TESTHR((__uuidof(Recordset)));pRst->Open(sql,_variant_t((IDispatch*)m_DBCnt,true),adOpenKeyset,adLockOptimistic,adCmdText);//数据绑定TESTHR(pRst->QueryInterface(__uuidof(IADORecordBinding),(LPVOID*)&picRs));
TESTHR(picRs->BindToRecordset(&rs));//填写需要修改的数据strcpy(rs.m_sz_code,m_code);strcpy(rs.m_sz_date,m_date);strcpy(rs.m_sz_provider,m_provider);strcpy(rs.m_sz_tel,m_tel);rs.m_f_number=m_number;rs.m_f_price=m_price;strcpy(rs.m_sz_buyer,m_buyer);//开始更新数据TESTHR(picRs->Update(&rs));//释放ADO对象picRs->Release();pRst->Close();}catch(__error&e){AfxMessageBox(e.ErrorMessage());return;}MessageBox("完成操作!");m_log->AddLog("修改入库信息");RefreshData();}voidCDlgViewDevIn::OnBtnVidel(){if(!UpdateData())return;CStringsql_;sql_.Format(CString("DELETEFROMDEVICE_INWHEREin_date=")+DATEFMT,m_date);_bstr_tsql=sql_;try{//执行删除数据的SOL语句m_DBCnt->Execute(sql,NULL,adCmdText);}catch(__error&e){AfxMessageBox(e.ErrorMessage());return;}MessageBox("完成操作!");m_log->AddLog("删除入库信息");RefreshData();}11、设备入库窗口
在主对话框中单击“设备入库”按钮就进入如图1-17所示的界面。
图1-17设备入库登记界面下面就是单击“确定”按钮之后,更新数据库操作的代码:////添加入库记录voidCDlgDevIn::OnBtnDiadd(){if(m_()==CB_ERR){MessageBox("请选择一个设备");return;}if(!UpdateData())return;_RecordsetPtrpRst=NULL;CDevInRsrs;try{TESTHR((__uuidof(Recordset)));//打开数据库表格到Recordest对象pRst->Open("device_in",_variant_t((IDispatch*)m_DBCnt,true),adOpenKeyset,adLockOptimistic,adCmdTable);//填写新数据m_(rs.m_sz_code,11);sprintf(rs.m_sz_date,"%d-%d-%d%d:%d:%d",m_(),m_(),m_(),m_(),m_(),m_());strcpy(rs.m_sz_provider,m_provider);strcpy(rs.m_sz_tel,m_tel);rs.m_f_number=m_number;rs.m_f_price=m_price;strcpy(rs.m_sz_buyer,m_buyer);COleSafeArrayvaFieldlist,vaValuelist;(vaFieldlist,vaValuelist);//开始一个事务m_DBCnt->BeginTrans();//添加新数据到device_in表TESTHR(pRst->AddNew(vaFieldlist,vaValuelist));pRst->Close();//打开device表CStringsql_;sql_.Format("SELECT*FROMdeviceWHEREcode='%s'",rs.m_sz_code);_bstr_tsql=sql_;pRst->Open(sql,_variant_t((IDispatch*)m_DBCnt,true),adOpenKeyset,adLockOptimistic,adCmdText);//若没有此设备的库存记录if(pRst->GetRecordCount()==0)
{CDevRsrsDev;strcpy(rsDev.m_sz_code,rs.m_sz_code);rsDev.m_f_cur=rs.m_f_number;rsDev.m_f_total=rs.m_f_number;rsDev.m_f_max=1;rsDev.m_f_min=1;//创建一个设备库存记录COleSafeArrayvaFields,vaValues;(vaFields,vaValues);TESTHR(pRst->AddNew(vaFields,vaValues));}else//若有此设备的库存记录{CDevRsrsDev;IADORecordBinding*picRs=NULL;//InterfacePointerdeclared.(VC++Extensions)TESTHR(pRst->QueryInterface(__uuidof(IADORecordBinding),(LPVOID*)&picRs));TESTHR(picRs->BindToRecordset(&rsDev));strcpy(rsDev.m_sz_code,rs.m_sz_code);rsDev.m_f_cur=rs.m_f_number+rsDev.m_f_cur;rsDev.m_f_total=rs.m_f_number+rsDev.m_f_total;//修改原有的设备库存记录TESTHR(picRs->Update(&rsDev));picRs->Release();}pRst->Close();//提交事务m_DBCnt->CommitTrans();}catch(__error&e){AfxMessageBox(e.ErrorMessage());m_DBCnt->RollbackTrans();return;}MessageBox("完成操作!");m_log->AddLog("添加入库信息");EndDialog(0);}12、设备采购报表的管理在主对话框中单击“生成设备采购计划报表”按钮就进入如图1-18所示的界面。据之后,将生成一个设备采购计划报表,存入数据库中。图1-18设备采购计划报表界面////显示所选中设备的信息voidCDlgReport::OnCloseupComboRpdevs()
{charbuf[64];//读取用户所选的编号m_(buf,64);if(strlen(buf)<=0)return;_RecordsetPtrpRst=NULL;IADORecordBinding*picRs=NULL;//InterfacePointerdeclared.(VC++Extensions)CDevCodeRsrs1;CDevRsrs2;_bstr_tstrSQL;try{生成所需的SQL语句CStringsql;("SELECT*FROMDEVICE_CODEWHEREcode='%s'",buf);strSQL=sql;TESTHR((__uuidof(Recordset)));pRst=m_DBCnt->Execute(strSQL,NULL,adCmdText);//读取编号对应的设备名称TESTHR(pRst->QueryInterface(__uuidof(IADORecordBinding),(LPVOID*)&picRs));TESTHR(picRs->BindToRecordset(&rs1));m_("%s",rs1.m_sz_name);结束操作picRs->Release();pRst->Close();}catch(__error&e){AfxMessageBox(e.ErrorMessage());}try{CStringsql;("SELECT*FROMDEVICEWHEREcode='%s'",buf);strSQL=sql;TESTHR((__uuidof(Recordset)));pRst->Open(strSQL,_variant_t((IDispatch*)m_DBCnt,true),adOpenKeyset,adLockOptimistic,adCmdText);if(pRst->GetRecordCount()!=1){m_max=0;m_cur=0;m_total=0;}else{TESTHR(pRst->QueryInterface(__uuidof(IADORecordBinding),(LPVOID*)&p
icRs));TESTHR(picRs->BindToRecordset(&rs2));//读取编号对应的库存情况m_max=rs2.m_f_max;m_cur=rs2.m_f_cur;m_total=rs2.m_f_total;picRs->Release();}pRst->Close();}catch(__error&e){AfxMessageBox(e.ErrorMessage());}UpdateData(FALSE);}13、库存报警窗口在主对话框中单击“库存报警”按钮就进入如图1-19所示的界面。图1-19库存报警界面检索记录的代码如下:////检索过多、过少库存voidCDlgDevAlert::SearchOver(){_RecordsetPtrpRst=NULL;IADORecordBinding*picRs=NULL;//InterfacePointerdeclared.(VC++Extensions)CDevRsrs;try{_bstr_tstrSQL("SELECT*FROMDEVICEWHEREnow_numb
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 终止销售协议书范本
- 财产协议书归属公证
- 2025年风电项目自然保护区调查考核试卷
- 2025年健康保健行业健康管理智能设备研究报告及未来发展趋势预测
- 2025年基层医疗服务能力提升-医疗纠纷(预防、处理)流程与技巧考核试卷
- 工业绿色供应链逆向物流管理考核试卷
- 2025年高速铁路旅客运输服务质量标准考核试卷
- 2025年工业互联网平台应用5G网络切片隔离制造业继续教育考核试卷
- 2025年科技创新行业科技成果转化案例报告
- 2025年互联网行业电子商务与互联网创新研究报告及未来发展趋势预测
- 北师大版数学七年级上册期中综合能力测评卷(含解析)
- 农业经理人考试题库四级及答案
- 2025年入团考试知识总结试题及答案
- 2025年健康险行业分析报告及未来发展趋势预测
- JJF 2291-2025辉光放电质谱仪校准规范
- 出租注册地址合同范本
- 统编版(2024)三年级上册道德与法治第二单元 爱科学 学科学 教案(4-6课)
- GB/T 24460-2025太阳能光伏照明装置总技术规范
- 2025年通信技术公司工作人员招聘考试笔试试题(附答案)
- 生态城市绿色建筑协同-洞察与解读
- 安全标识标识化设计标准方案
评论
0/150
提交评论