智慧管理計算機倉庫自動化系統_第1頁
智慧管理計算機倉庫自動化系統_第2頁
智慧管理計算機倉庫自動化系統_第3頁
智慧管理計算機倉庫自動化系統_第4頁
智慧管理計算機倉庫自動化系統_第5頁
已閱讀5頁,還剩39頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

倉庫管理系統

倉庫管理是整個物資供應管理系統的關鍵。本實例著重講解倉庫管理模塊,給出數據庫

設計和程序實現過程。

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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論