




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
倉庫管理系統
倉庫管理是整個物資供應管理系統的關鍵。本實例著重講解倉庫管理模塊,給出數據庫
設計和程序實現過程。
1、系統設計
1>1系統設計目的
系統開發H勺總統任務是實現企'業物資設備管理的系統化、規范化和自動化,從而到達
倉庫管理效率H勺目的。
1、2開發設計思想
在本系統的設計過程中,為「克服倉庫管理信息處理量大的困難,滿足計算機管理U勺
需要,采用了下面的某些原則:
??統一多種原始單據的J格式,統一帳目和報表的格式。
??刪除不必要口勺管理冗余,實現管理規范化、科學化。
??程序代碼原則化,軟件統一化,保證軟件的可維護性和實用性。
??界面盡量簡樸化,做到實用、以便,盡量滿足企業不一樣層次員工的需要。
??建立操作日志,系統自動記錄所進行的多種操作。
I、3系統功能分析
本例中的倉庫管理系統需要完畢的功能重要有如下幾點:
??倉庫管理多種信息的輸入,包括入庫、出庫、還庫、需求信息的輸入等。
??倉庫管理多種信息的查詢、修改和維護,
??設備采購報表H勺生成。
??在庫存管理中加入最高儲備和最低儲備字段,對倉庫中的物資設備實現監
控和報警。
??企業各部門日勺物資需求的管理。
??操作日志的管理。
??倉庫管理系統H勺使用協助。
1、4系統功能模塊設計
在系統功能分析的基礎上,結合VisualC++程序編制的特點,得到如圖1/所示的系統
功能模塊圖。
理塊塊塊塊
圖1-1系統功能模塊圖
2、數據庫設計
2、1數據庫需求分析
在仔細調查企業倉庫物資設備管理過程口勺基礎上,得到本系統所處理的數據流程如圖
1-2所示:
圖1-2數據流程圖
本實例設計H勺數據項和數據構造如卜.:
??設備代碼信息,包括的數據項有設備號、設備名稱。
??既有庫存信息,包括的數據項有設備、既有數目、總數目、最大庫存和最
小庫存。
??設備使用信息,包括的數據項有使用日勺設備、使用部門、數目、使用時間
和出庫時狀態等。
??設備采購信息,包括的數據項有采購的設備、采購員、供應商、采購數目
和采購時間等。
??設備償還信息,包括的數據項有償還設備、償還部門、償還數目、償還時
間和經手人等。
??設備需求信息,包括的數據項有需求的部門、需求設備、需求數目和需求
時間等。
2、2數據庫概念構造設計
本實例根據上面的設計規劃出的實體有庫存實體、入庫實體、出庫實體、采購實體、還
庫實體和需求實體,各實體的E-R圖及其關系描述如下:
圖1-3庫存實體E-R圖
圖1-4入庫實體E-R圖
圖1-5出庫實體E-R圖
圖1-6部門需求實體E-R圖
圖1-7還庫實體E-R圖
圖1-8計劃采購實體E-R圖
圖1-9實體和實體之間口勺關系E-R圖
2、3數據庫邏輯構造設計
在上面的實體以及實體之間的關系的基礎上,形成數據庫中的表格和各個表格之間的
關系。倉庫管理系統數據庫中各個表格的設計成果如下面的幾種表格所示。每個表格表達在
數據庫中日勺一種表。
表1-1設備代碼表device_code
列名數據類型可否為空闡明
codeVARCHAR2(6)NOTNULL設備號(主鍵)
nameVARCHAR2(20)NULL設備名稱
表1-2設備入庫表dcvice_in
列名數據類型可否為空闡明
codeVARCHAR2(6)NOTNULL設備號
in_daleDATENOTNULL入庫時間(主鍵)
providerVARCHAR2(20)NULL供應商
telenoVARCHAR2(10)NULL供應商
in_numbcrNUMBER(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出庫數量
lakerVARCHAR2(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_relum
列名數據類型可否為空闡明
codeVARCHAR2(6)NOTNULL設備號
retum_dateDATENULL還庫時間(主鍵)
keeperVARCHAR2(20)NULL倉庫管理員
return_numberNUMBER(6)NULL償還數量
relum_dateVARCHAR2(10)NULL償還人
表1-7操作口志表howdo
列名數據類型可否為空闡明
do_uscrVARCHAR2(10)NOTNULL操作員
do_whalVARCHAR2(40)NOTNULL操作內容
do_dateDATENOTNULL操作時間
表1-8設備采購計劃表devicc_wantbuy
列名數據類型可否為空闡明
codeVARCHAR2(6)NOTNULL設備號
now_numberNUMBER(6)NULL既有庫存
total_numberNUMBER(6)NULL總庫存
max_numberNUMBER(6)NULL最大庫存
buy_numbcrNUMBER(6)NULL購置數量
providerVARCHAR2(10)NULL供應商
priceNUMBER(6)NULL價格
buy_dateDATENULL計劃采購時間(主鍵)
3、數據庫構造的實現
4、創立應用程序
(1)(1)選擇“FileNew”中的“新建項目”選項卡中“MFCAppWizard
(exe)”,設置合適的目錄和項目名,例如“E:\Project”目錄下的“DMS”
項目。
(2)(2)創立一種對話框應用程序(“DialogBased"),單擊“Next”按鈕。
(3)(3)由于在這個項目中將要使用ADO,因此在MFCAppWizard曰勺第
二步,需要選中“Aulomalion”選項,使應用程序可以支持自動化對象。如
圖1/0所示
(4)(4)單擊“Finish”按鈕結束項目6勺創立。主對話框名為CDMSDlg。
(5)(5)項目創立完畢后,在頭文獻sidafx.h中加入下面4行:
#import“c:\programfiles\commonfiles\syslem\ado\msadol5.dll"no_namespace(“EOF",“adoEOF")
#inckidc”icrsint.h"
inlinevoidTESTHR(HRESULTx){ifFAILED(x)_com_issue_error(x);};
^defineDATEFMTCstnng(“'%s”')
5、操作日志模塊Fl勺設計
(1)寫日志模塊
MFCAppWizard-Step2of4
Whatfeatureswouldyouliketoinclude?
“Aboutbox
「Context-sensitiveHelp
曠3Dcontrols
Whatothersupportwouldyouliketoinclude?
PAutomation"
EditingControl:|RecordPActiveXControls
|xCheckBoi(?RadioB?tto?WouldyouliketoincludeWOSAsupport?
「RadioBMtoa
廠WindowsSockets
Pleaseenteratitleforyourdialog:
DMS
<BackNext>FinishCancel
圖1-1()使應用程序支持自動化
先定義一種名為CIogMngrH勺類
//LogMngr.h
〃定義一種Log管理器
classCLogMngr
{
public:
CLogMngr();
virtual-CLogMngr。;
public:
boolAddLog(LPCSTRop);
voidSetupLConnectionPlrcnnt,CString&user)
m_DBCnt=emit;
m_user=user;
protected:
_ConneclionPlrm_DBCnl;
CStringm_user;
};
下面是ClogMngr::AddLog內部實現詳細過程。
//LogMngr.cpp
〃向數據庫中添加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.
tm.GetYear(),tm.GetMonth(),tm.GetDayO,
tm.GetHourO,tmGetMinute(),tm.GetSecondO);
_bstr_tsql=sql_;
try
{
ni_DBCnt->Exec'Jte(sql,NULL,adCmdText);
)
catch(_com_error&e)
CStringError=e.ErrorMessage();
AfxMessageBox(e.ErrorMessageO);
returnfalse;
returntrue;
(2)讀日志模塊
有巖債作日右
操作員1株操作日期I操傣作內內容容q▲明細
登
數
錄
據
1112001-9-1...
登
教
錄
據操作員|
1112001-9-1...
登
數
錄
據
1112001-9-1...
登
數
錄
據
1112001-9-1...
登
數
錄
據
2001-9-1...
登
111數
錄
據曰期
2001-9-1...卷錄數據
登
111數
錄
據f
2001-9-1...登錄數據L
登
致
111錄
據
1112001-9-1...
修
庫
登錄改數據]
存操作內容
PzkpfwIV2001-9-1...
修
庫
改
存
PzkpfwIV
刪
庫
PzkpfwIV2001-9-1...除
存
修
PzkpfwIV2001-9-1...改庫
存
不
PzkpftwIV2001--9S--1l...加設
備
更
PzkpfwIV2001-9-1...新設
備
用
PzkpfwIV2001-9-1...加設
備
刪
PzkpfwIV2001-9-1...除設
PzkpfwIV備
不
加設
PzkpfwIV2001-9-1...缶
刪
除設
PzkpfwIV2001-9-1...缶
布
加設
PzkpfwIV2001-9-1...備
刪
除設
PzkpfwIV2001-9-1...備
更
新設
PzkpflwIV2001-9-1...備
登
錄數
PzkpfwIV2001-9-1...據
登
錄數
PzkpfwIV2001-9-1...據
刪
除離清空日志記錄
PzkpfwIV2001-9-1...求
刪
除福
Tom2002-8-1...求
則
脛史
Tom2002-8-1...擊
pnnp-fl-iI>退出
?1
圖1-11查看日志窗口
初始化界面代碼如F:
BOOLCDlgViewLog::OnlnitDialog()
(
CDialog::OnlnitDialog();
m」isl.【n$crlColumn(0,"操作員");
m」ist.InsertColumn(l,"操作日期");
m」ist.InsertColumn(2,"操作內容");
RECTrect;
inlisl.GetWindowRect(&rect);
intwid=rcct.right-reel.left;
m_list.SetColumnWidth(0.\vid/3);
m_list.SetColumnWidth(1.wid/3);
m_Iist.SetColumnWidth(2,wid/3);
m_lisl.SciExtcndcdStylc(LVS_EX_FULLROWSELECT);
RefreshDataO;
returnTRUE;//returnTRUEunlessyousetthefocustoacontrol
//EXCEPTION:OCXPropertyPagesshouldreturnFALSE
}
voidCDlgViewLog::RefreshData()
(
m_list.DeleteAllItems();
m_list.SetRedniw(FALSE);
_bsir_tstrSQL("SELECT*FROMHOWDO");
_RccordsctP(rMyScl;
inti=0:
iry
{
MySet.Createlns(ance(_uuidof(Recordset));
MySet=m_DBCnt->Execute(strSQL,NULL,adCmdText);
_variant_tHolder;
while(!MySel->adoEOF)
(
Holder=MySei->GetCollect("do_user");
if(Holder.vt!=VT_NULL)
m_list.ln5ertltem(i,(char*)(_bstr_t)Holder);
Holder=MySci->GetCollecl("do_dalc");
if(Holder.vt!=VT_NULL)
m_iist.SetItemText(i,I,(char*)(_bstr_t)Holderi;
Holder=MySci->GclCollcct("do_what");
if(Holdcr.vt!=VT_NULL)
m_list.SetItemText(i.2.(char*)(_bstr_t)Holden;
MySet->MoveNext();
I
MySet->Close();
}
catch(_com_error&e)
{
AfxMessageBox(e.EnorMessageO);
m_list.SetRedraw(TRUE);
return;
)
mJisl.SciRcdraw(TRUE);
}
voidCDlgViewLog::OnClickListVllog(NMHDR*pNMHDR,LRESULT*pResult)
]
inti=m」ist.Ge〔SeleclionMark();
m_opr=in_list.GetItemText(i,O);
in_datc=m_list.GctItcrnT2xt(i,1);
m_op=mJist.GethemText(i,2);
UjxlateData(FALSE);
?pResult=0;
}
//DlgViewLog.cpp
〃刪除所有H忐記錄的函數。
voidCDlgViewLog::OnBtnVlrmall()
_bstr_tstrSQL("TRUNCATETABLEHOWDO");
{
m_DBCnt->ExccutcJstrSQL.NULL.adCmdTcxt);
I
catch(_com_error&e)
{
AfxMessageBox(e.EnorMessage());
EndDialog(O);
)
RefreshDataO;
}
6、登錄窗口的設計和程序初始化
在CDMSDlg::OnInitDiak)g()中加入這樣一段代碼:
//DMSDlg.cpp
〃彈出登耒界面
CDlgLoglndig;
do
(
if(!dlg.DoModal())
EndDialog(O);
}while(dlg.m_UsrNaine.GetLength()==O);
它的目的是彈出圖1-12所示的登錄對話框,并從中獲得一種有效H勺顧客名。
圖1-12登錄界面
得到有效顧客名后,程序用如下代碼:
//DMSDIg.cpp
〃建立數據庫連接,初始億組員變量
〃登錄數據庫,若失敗,則關閉程序。
{
m_DBCnt.CreateInstance(_uuidof(Connection));
CStringsql_;
sql_.Format("DSN=DMS;UID=%s;PWD=%s'\dlg.m_UsrName,dlg.m_UsrPwd);
_bsir_(sql=sql_;〃建立連接
m_DBCnt->Open(sql,初始化日志管理器
m」ogMngr.Selup(m_DBCnt,dlg.m_UsrName);//記錄本次登錄
mJogMngr.AddLog("登錄數據庫");
)
catch(_com_error&e)
(
AfxMessageBox(e.ErrorMessage());
this->EndDiaiog(0);
在程序結束時關閉數據庫連接。
//DMSDIg.cpp
〃關閉數據庫連接
voidCDMSDIg::OnDestroy()
{
CDialog::OnDestroy();
m_DBCnt->Close();
1
7、主對話框界面口勺設計
登錄完畢后,顯示出主對話框。它的界面設計如圖1-13所示,單擊某個按鈕就能彈出
某個功能的界面。
圖1-13主對話框界面
以其中“設備代碼”按鈕為例,闡明它的事件處理函數。代碼如下:
//DMSDIg.cpp
〃顯示設備代碼管理界面
voidCDMSDlg::OnBtnDevcode()
(
CDIgDcvcodcdig;
dlg.Sctup(ni_DBCnl.&m_logMngr);
this->ShowWindow(SW_HlDE);
dlg.DoModal();
this->ShowWindow(SW_SHOW);
)
其他按鈕的事件處理函數,代碼與“設備代碼”按鈕日勺事件處理函數相似。
8、設備代碼管理窗口時建立
對話框類名為CdlgDevcode設計如圖1-14所示
設濟代碼。?現
設備號I設備名
007Sting
006Me-263
005Stuka
004Bf-109
003Panther
002Tiger
001PzkpfwIV
圖1-14設備代碼管理窗口
//DlgDcvcodc.cpp
〃對話框口勺初始化
BOOLCDIgDevcode::OnInitDialog()
(
CDialog::OnInitDialogO;/;切分列表控件
m_list.InsertColumn(0,"設備號");
m_lisLlnsertColumn(l設備名");
RECTrect;
m_list.GetWindowRect(&rect);
intwid=rect.right-rect.left;
m_list.SetColumnWidth(0,wid/2);
m」isl.SeiColumnWid【h(l、wid/2);
m」ist.SetExtendedStyle(LVS_EX_FULLROWSELECT)以讀取已經有數據
RefreshDataO;
returnTRUE;
)
//DlgDcvcode.cpp
〃消息映射部分
BEGIN_MESSAGE_MAP(CDlgDevcode,CDialog)
//{{AFX_MSG_MAP(CDlgDevcode)
ON_NOTIFY(NM_CLICK,IDC_LIST_DEVCODE,OnClickListDevcode)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
〃事件處理部分
voidCDlgDevcode::OnClickListDevcode(NMHDR*pNMHDR,LRESULT*pResult)
(
inti=rn」isl.GelSeleciionMark();
m_code=m」ist.GeUtemText(i,O);
m_name=m_list.GetI:emText(i,1);
UpdateData(FALSE);
*pResu!t=0;
其他程序的清單如下:
//DlgDevcode.cpp:implementationfile
//
#includc"stdafx.h"
#include"DMS.h"
#include"DlgDevcode.h"
#ifdef_DEBUG
#definenewDEBUG.NEW
#undefTHIS_FILE
staticcharTHIS_FILE[]=_FILE_;
#endif
〃〃/〃//〃/〃〃/〃//〃/〃〃/〃//〃//〃///〃/〃/〃〃/〃///〃/〃///〃/〃〃/〃
//CDlgDevcodedialog
CDIgDcvuudc;;CDlgDcvcoJc(CWnd+pPaicnl/*-NULLs7)
:CDialog(CDlgDevcode::IDD,pParent)
(
//{{AFX_DATA_INIT(CDlgDevcode)
m_code=_T("");
m_name=_T("");
//}}AFX_DATA_INIT
m_DBCnt=NULL;
mjog=NULL;
voidCDlgDevcode::DoDataExchange(CDataExchange*pDX)
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CDlgDevcode)
DDX_Control(pDX,IDC_LIST_DEVCODE,
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,OnB(nDcadd)
ON_BN_CLICKED(IDC_BTN_DCDEL,OnBlnDcdel)
ON_BN_CLICKED(IDC_BTN_DCUPD,OnBtnDcupd)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/〃/〃//〃〃〃//〃///〃/〃///〃/〃///〃//〃/〃〃〃〃/〃//〃//〃//〃//〃//〃/
//CDlgDevcodemessagehandlers
〃負責讀取已經有數據的函數
voidCDlgDevcode::RefreshData()
(
m_list.DeleteAnitems();
m_list.SetRedraw(FALSE);
_bs(r_tsuSQLC'SELECT*FROMDEVICE.CODE");
_RecordsetPtrMySet;
inti=0;
try
{
MySet.CreateInstance(_uuidof(Recordset));〃執行SOL語句讀取記錄
MySet=m_DBCnt->Execute(strSQL,NULL,adCmdText);
_variant_tHolder;
while(!MySet->adoEOF)
{〃取出code字段的數據
Holder=MySet->GetCollect("code");
if(Holder.vt!=VT_NULL)
m_list.lnsertltem(i,(char*)(_bstr_t)Holder);
〃取出name字段的數據
Holder=MySet->GetCollect("name");
if(Holdcr.vt!=VT_NULL)
in_list.SetItemText(i,1,(char*)(_bstr_t)Holder);
MySet->MoveNext();
)
I
catch(_com_error&e)
(
AfxMessageBox(e.ErrorMessage());
ni_list.SctRcdraw(TRUE);
return;
m_list.SetRcdraw(TRUE);
〃負責添加記錄的函數
voidCDIgDevcode::OnBtnDcadd()
(
UpdalcDataO;
CStringsql_;
sql_.Format("INSERTINTODEVICE_CODE()VALUES('%s'.'%s')".m_code,m_name);
_bstr_tsql=sql_;
iry
(
m_DBCni->Exccuie:sql,NULL,adCmdTex。;
}
catch(_com_error&e)
(
AfxMessageBox(e.ErrorMessageO);
return;
I
m」og->AddLog("添加設備記錄、");
RefreshData();
)
〃負責刪除記錄的函數
voidCDIgDevcode::OnBtnDcdel()
(
UpdatcDataO;
CStringsql_;
sql_.Format("DELETEFROMDEVICE_CODEWHERECODE='%s"'.m_code);
_bstr_tsql=sql_;
try
(
m_DBCnt->Exccute;sql,NULL,adCnidTcxt);
}
catch(_com_error&e)
I
AfxMessageBox(e.ErrorMessageO);
return;
}
m」og->AddLog("刪除設備記錄。”);
RefreshData();
}
〃負責更新數據的函數
voidCDlgDevcode::OnBtnDcupd()
(
UpdateData();
CStringsql_;
sql_.Fonnat("UPDATEDEVICE.CODESETNAME='%s'WHERECODE='%s";m_namc,m_codc);
_bstr_tsql=sql_;
try
(
m_DBCnt->Execute;sql,NULL,adCmdText);
)
catch(_com_crror&c)
(
AfxMessageBox(e.ErrorMessageO);
return:
)
m」og,AddIx)g("更新設備記錄。
RefreshData();
}
9、庫存信息管理窗口的創立
顧客可以在此新增、修改、刪除某種設備U勺記錄。單擊主對話框中的“庫存信息”按鈕,
將出現圖1-15所示日勺界面。新增記錄時,顧客在“設備號”組合框中選擇一種設備號,在
下面填入多種數量,之后單擊“新增”按鈕即可向表中增長記錄。
修改記錄時,顧客單擊列表中某一行,程序運用1、8提到的措施,在窗口下面把這一
行記錄II勺詳細信息顯示出來,顧客即可對之修改。
“設備號”這個子窗「I初始化H勺時候有如卜代碼:
//DlgDcv.cpp
〃時話框的初始化
BOOLCDlgDev::OnInitDialog()
(
CDialog::OnIni(Dialog();
〃切分列表控件
11「后匕睡?口(20111口111(0,"設備號");
m_list.InsertColumn(1,"現存數量");
m_list.InsertColumn(2,"最大數量");
171_瓜.1|吠11?011111111(3,"最小數量");
m_list.InsertColumn(4,"總數");
RECTrect;
m_list.GetWindowRect(&rect);
intwid=rect.right-rect.left;
m」isl.SeiColumrWidth(0,wid/5);
m_list.SetColumr.Width(1,wid/5);
m_list.SetColumr.Width(2,wid/5);
m_list.SetColumr.Width(3,wid/5);
m」ist.SetColun】rWidlh(4,wid/5);
m_list.SetExtendedStyle(LVS_EX_FULLROWSELECT);
_RecordsetPtrpRst=NULL;
lADORecordBinding*picRs=NULL://InterfacePointerdeclared.(VC++
Excensions)
CDevCodeRsrs;
try
{
_bsir_tstrSQL("SELECT*FROMDEVICE.CODE");
TESTHR(pRst.CreateInstance(_uuidof(Recordset)));
//讀取所有的設備編號
pRst=m_DBCnt->Execute(strSQL,NULL.adCmdText);
〃數據綁定
TESTHR(pRst->QueryInterface(_uuidof(IADORecordBinding),(LPVOID*)&picRs));
TESTHR(picRs->BindTbRecordset(&rs));
inti=0;
while(!pRst->adoEOF)
{〃向組合框控件中添加所有的設備編號
m_devs.AddString(rs.m_sz_code);
pRst->MoveNext();
|
picRs->Release();
pRst->Closc();
}
catch(_com_eiTor&e)
{
AfxMessageBox(e.ErrorMessageO);
EndDialog(O);
returnTRUE;
)
RefreshDataO;
iclumTRUE.//icluinTRUEunlessyousetllicfucustoacuiiliul
//EXCEPTION:OCXPropertyPagesshouldreturnFALSE
圖1-15庫存信息管理
10、設備入庫信息管理
在主對話框中單擊“入庫信息”按鈕就進入如圖1-16所示的界面。
查看入庫信息xj
設備號入庫時間供應商供應商電話數量I價格采購員I
0041983-06-0...M.D.800-123321160.0...1700Deny
0061983-06-0...Grum...800-0000112.00...7100Bill
0021983-06-0...Lockh...800-5432110.50...1.990...Jack
0011983-06-0...G.D.800-12345100.0...1000Tom
IH
圖1-16設備入庫信息管理界面
下面是修改和刪除記錄的代碼:
voidCDlgViewDevIn::OnBtnViupdate()
{
if(!UpdatcData())
return;
CStringsql_;
sql_.Format(CString("SELECT*FROMDEVICE」NWHEREin_date=")+DATEFMT,
m_date);
bstr_tsql=sql_;
_RecordsetP(rpRsl=NULL;
lADORecordBinding*picRs=NULL://InterfacePointerdeclared.(VC++Extensions)
CDevInRsrs;
TESTHR(pRst.Createlnstance(_uuidof(Recordset)));
pRst->Open(sql,_variant_t((IDispatch*)m_DBCnt,
true),adOpenKeyset,adLockOptimistic,adCmdText);
〃數據綁定
TESTHR(pRst->QueryInterface(_uuidof(IADORecor(JBinding),(LPVOID*)&picRs));
TESTHR(picRs->BindToRecordset(&rs));
〃填寫需要修改的數據
strcpy(rs.ni_sz_code,m_code);
strcpy(rs.m_sz_date,ni_date):
strcpy(rs.m_sz_provider,m_provider);
strcpy(rs.m_sz_tel,m_tel);
rs.ni_Cnumber=m_number;
rs.m_Lprice=m_price;
strcpy(rs.ni_sz_buyer,m_buyer);
〃開始更新數據
TESTHR(picRs->Update(&rs));
〃釋放ADO對象
picRs->Release():
pRst->Close();
catch(_com_error&e)
AfxMessageBox(e.ErrorMessageO);
return;
)
MessageBox("完畢操作!");
m」og?>AddLog("修改入庫信息”);
RefreshData();
)
voidCDlgViewDevIn::OnBtnVidel()
{
if(!UpdateData())
return;
CStringsql_;
sql_.Format(CString("DELETEFROM
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- T/CAQI 16-2016家用和類似用途飲用水處理裝置用納濾膜元件
- 丹東醫院面試題及答案
- 公園模擬面試題及答案
- 基層治理類面試題及答案
- 過程性考試題及答案
- 管理崗位面試題及答案
- 打印中考試題及答案
- T/CAEPI 59-2023污染地塊風險管控與修復后長期環境監測技術指南
- 爭做美德好少年演講稿
- 2025年幼兒園小班教學工作總結模版
- TCANSI 119-2023 船載水下機器人選用與操作一般要求
- 《高速鐵路客運服務禮儀》試題及答案 項目5 試題庫
- 2024屆高考語文復習:現代文閱讀 課件
- 《GIS地理信息系統》課件
- 全口咬合重建與牙齒位置調整
- 創新思維與創業實驗-東南大學中國大學mooc課后章節答案期末考試題庫2023年
- 國際素食日介紹PPT
- 預制構件及其連接的識圖與構造
- 2020譯林版新教材高二英語全四冊單詞表(單詞默寫)
- 低壓加熱器檢修工藝規程
- 江西贛州城市文化介紹
評論
0/150
提交評論