




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、倉庫管理系統(tǒng) 倉庫管理是整個物資供應管理系統(tǒng)的核心。本實例著重講解倉庫管理模塊,給出數(shù)據(jù)庫設計和程序實現(xiàn)過程。 1、系統(tǒng)設計1、1系統(tǒng)設計目標系統(tǒng)開發(fā)的總統(tǒng)任務是實現(xiàn)企業(yè)物資設備管理的系統(tǒng)化、規(guī)范化和自動化,從而達到倉庫管理效率的目的。1、2開發(fā)設計思想在本系統(tǒng)的設計過程中,為了克服倉庫管理信息處理量大的困難,滿足計算機管理的需要,采取了下面的一些原則: 統(tǒng)一各種原始單據(jù)的格式,統(tǒng)一帳目和報表的格式。 刪除不必要的
2、管理冗余,實現(xiàn)管理規(guī)范化、科學化。 程序代碼標準化,軟件統(tǒng)一化,確保軟件的可維護性和實用性。 界面盡量簡單化,做到實用、方便,盡量滿足企業(yè)不同層次員工的需要。 建立操作日志,系統(tǒng)自動記錄所進行的各種操作。1、3系統(tǒng)功能分析 本例中的倉庫管理系統(tǒng)需要完成的功能主要有以下幾點:
3、60; 倉庫管理各種信息的輸入,包括入庫、出庫、還庫、需求信息的輸入等。 倉庫管理各種信息的查詢、修改和維護。 設備采購報表的生成。 在庫存管理中加入最高儲備和最低儲備字段,對倉庫中的物資設備實現(xiàn)監(jiān)控和報警。 企業(yè)各部門的物資需求的管理。
4、160; 操作日志的管理。 倉庫管理系統(tǒng)的使用幫助。1、4系統(tǒng)功能模塊設計 在系統(tǒng)功能分析的基礎上,結合Visual C+程序編制的特點,得到如圖1-1所示的系統(tǒng)功能模塊圖。倉庫管理系統(tǒng)系統(tǒng)模塊維護模塊輸入模塊查看模塊報表模塊幫助模塊入庫模塊還庫模塊出庫模塊需求模塊日志管理
5、 圖1-1 系統(tǒng)功能模塊圖 2、數(shù)據(jù)庫設計2、1數(shù)據(jù)庫需求分析在仔細調查企業(yè)倉庫物資設備管理過程的基礎上,得到本系統(tǒng)所處理的數(shù)據(jù)流程如圖1-2所示:倉庫現(xiàn)有庫存各部門需求企業(yè)生產計劃匯總設備采購設備出庫設備入庫設備還庫 圖1-2 數(shù)據(jù)流程圖本實例設計的數(shù)據(jù)項和數(shù)據(jù)結構如下: 設備代碼信息,
6、包括的數(shù)據(jù)項有設備號、設備名稱。 現(xiàn)有庫存信息,包括的數(shù)據(jù)項有設備、現(xiàn)有數(shù)目、總數(shù)目、最大庫存和最小庫存。 設備使用信息,包括的數(shù)據(jù)項有使用的設備、使用部門、數(shù)目、使用時間和出庫時狀態(tài)等。 設備采購信息,包括的數(shù)據(jù)項有采購的設備、采購員、供應商、采購數(shù)目和采購時間等。
7、 設備歸還信息,包括的數(shù)據(jù)項有歸還設備、歸還部門、歸還數(shù)目、歸還時間和經(jīng)手人等。 設備需求信息,包括的數(shù)據(jù)項有需求的部門、需求設備、需求數(shù)目和需求時間等。2、2數(shù)據(jù)庫概念結構設計本實例根據(jù)上面的設計規(guī)劃出的實體有庫存實體、入庫實體、出庫實體、采購實體、還庫實體和需求實體,各實體的E-R圖及其關系描述如下:現(xiàn)有庫存設備號現(xiàn)有庫存警戒庫存總數(shù) 圖1-3 庫存實體
8、E-R圖入庫設備號供應商信息采購價格數(shù)量采購員 圖1-4 入庫實體E-R圖出庫設備號使用部門數(shù)量時間經(jīng)手人 圖1-5 出庫實體E-R圖部門需求設備號需求部門需求數(shù)量需求時間 圖1-6 部門需求實體E-R圖設備還庫設備號還庫時間、人還庫數(shù)量經(jīng)手人 圖1-7 還庫實體E-R圖計劃采購設
9、備號庫存信息供應信息時間 圖1-8計劃采購實體E-R圖入庫現(xiàn)有庫存出庫還庫部門需求設備采購 圖1-9實體和實體之間的關系E-R圖2、3數(shù)據(jù)庫邏輯結構設計在上面的實體以及實體之間的關系的基礎上,形成數(shù)據(jù)庫中的表格和各個表格之間的關系。倉庫管理系統(tǒng)數(shù)據(jù)庫中各個表格的設計結果如下面的幾個表格所示。每個表格表示在數(shù)據(jù)庫中的一個表。表1-1 設備代碼表device_code 列名數(shù)據(jù)類型可否為空
10、說明codeVARCHAR2(6)NOTNULL設備號(主鍵)nameVARCHAR2(20)NULL設備名稱 表1-2 設備入庫表device_in列名數(shù)據(jù)類型可否為空說明codeVARCHAR2(6)NOTNULL設備號in_dateDATE NOTNULL入庫時間(主鍵)providerVARCHAR2(20)NULL供應商 telenoVARCHAR2(10)NULL供應商電話in_numberNUMBER(6) NULL入庫數(shù)量 priceNUMBER(6) NULL價格 buyerVARCHAR2(10)NULL采購員 表1-3 設備出庫表device_out列名數(shù)據(jù)類型可否為空說
11、明codeVARCHAR2(6)NOTNULL設備號departmentVARCHAR2(20)NULL使用部門out_dateDATE NULL出庫時間(主鍵)out_stateNUMBER(1) NULL出庫狀態(tài)out_personVARCHAR2(10) NULL經(jīng)手人out _numberNUMBER(6) NOTNULL出庫數(shù)量 takerVARCHAR2(10) NULL領取人 usageVARCHAR2(20) NULL用途 表1-4 現(xiàn)有庫存表device列名數(shù)據(jù)類型可否為空說明codeVARCHAR2(6)NOTNULL設備號(主鍵)now_numberNUMBER(6) N
12、ULL現(xiàn)有庫存high _numberNUMBER(6) NULL最大庫存low _numberNUMBER(6) NULL最少庫存total _numberNUMBER(6) NULL總數(shù) 表1-5 部門需求表device_need列名數(shù)據(jù)類型可否為空說明codeVARCHAR2(6)NOTNULL設備號departmentVARCHAR2(20)NOTNULL部門名稱need _numberNUMBER(6) NULL需求數(shù)量begin_dateDATE NULL需求開始時間end_dateDATE NULL需求結束時間 表1-6 設備還庫表device_return列名數(shù)據(jù)類型可否為空說
13、明codeVARCHAR2(6)NOTNULL設備號return_dateDATE NULL還庫時間(主鍵) keeperVARCHAR2(20) NULL倉庫管理員 return_ numberNUMBER(6) NULL歸還數(shù)量 return_dateVARCHAR2(10) NULL歸還人 表1-7 操作日志表 howdo列名數(shù)據(jù)類型可否為空說明do_userVARCHAR2(10) NOTNULL操作員do_whatVARCHAR2(40) NOTNULL操作內容do_dateDATE NOTNULL操作時間 表1-8 設備采購計劃表device_wantbuy列名數(shù)據(jù)類型可否為空說明
14、codeVARCHAR2(6)NOTNULL設備號now_numberNUMBER(6) NULL現(xiàn)有庫存total_numberNUMBER(6) NULL總庫存max_numberNUMBER(6) NULL最大庫存buy_numberNUMBER(6) NULL購買數(shù)量providerVARCHAR2(10)NULL供應商 priceNUMBER(6) NULL價格buy_dateDATE NULL計劃采購時間(主鍵)3、數(shù)據(jù)庫結構的實現(xiàn)4、創(chuàng)建應用程序(1) (1) &
15、#160; 選擇“FileNew”中的“新建項目”選項卡中“MFC AppWizard(exe)”,設置合適的目錄和項目名,比如“E:Project”目錄下的“DMS”項目。(2) (2) 創(chuàng)建一個對話框應用程序(“Dialog Based”),單擊“Next”按鈕。(3) (3)
16、60; 由于在這個項目中將要使用ADO,所以在MFC AppWizard的第二步,需要選中“Automation”選項,使應用程序能夠支持自動化對象。如圖1-10所示(4) (4) 單擊“Finish”按鈕結束項目的創(chuàng)建。主對話框名為CDMSDlg。(5) (5) 項目創(chuàng)建完
17、畢后,在頭文件stdafx.h中加入下面4行:#import“c:programfilescommonfilessystemadomsado15.dll”no_namespace(”EOF”,”adoEOF”)#include”icrsint.h”inline void TESTHR(HRESULT x)if FAILED(x)_com_issue_error(x);#define DATEFMT Cstring(“%s”)5、操作日志模塊的設計(1)寫日志模塊 圖1-10 使應用程序支持自動化先定義一個名為ClogMngr的類/LogMngr.h/定義一個Log管理器class CLogMn
18、gr public:CLogMngr();virtual CLogMngr();public:bool AddLog(LPCSTR op);void Setup(_ConnectionPtr cnnt, CString& user)m_DBCnt = cnnt;m_user = user;protected:_ConnectionPtr m_DBCnt;CString m_user;下面是ClogMngr:AddLog內部實現(xiàn)詳細過程。/LogMngr.cpp/向數(shù)據(jù)庫中添加Log記錄的代碼。bool CLogMngr:AddLog(LPCSTR op)CTime tm = CTime
19、:GetCurrentTime();CString sql_; sql_.Format("INSERT INTO HOWDO (do_user,do_what,do_date) VALUES('%s','%s','%d-%d-%d %d:%d:%d')",m_user, op, tm.GetYear(), tm.GetMonth(), tm.GetDay(),tm.GetHour(), tm.GetMinute(), tm.GetSecond();_bstr_t sql = sql_; trym_DBCnt
20、->Execute(sql,NULL,adCmdText);catch(_com_error& e) CString Error = e.ErrorMessage(); AfxMessageBox(e.ErrorMessage();return false; return true;(2)讀日志模塊圖1-11 查看日志窗口 初始化界面代碼如下:BOOL CDlgViewLog:OnInitDialog() CDialog:OnInitDialog();m_list.InsertColumn(0,"操作員");m_list.InsertColumn(
21、1,"操作日期");m_list.InsertColumn(2,"操作內容");RECT rect;m_list.GetWindowRect(&rect);int wid = rect.right - rect.left;m_list.SetColumnWidth(0,wid/3);m_list.SetColumnWidth(1,wid/3);m_list.SetColumnWidth(2,wid/3);m_list.SetExtendedStyle(LVS_EX_FULLROWSELECT);RefreshData(); return
22、 TRUE; / return TRUE unless you set the focus to a control / EXCEPTION: OCX Property Pages should return FALSE void CDlgViewLog:RefreshData()m_list.DeleteAllItems();m_list.SetRedraw(FALSE); _bstr_t strSQL("SELECT * FROM HOWDO");_RecordsetPtr MySet; int i = 0;tryMySet.Create
23、Instance(_uuidof(Recordset); MySet = m_DBCnt->Execute(strSQL,NULL,adCmdText);_variant_t Holder;while(!MySet->adoEOF) Holder = MySet->GetCollect("do_user");if(Holder.vt!=VT_NULL)m_list.InsertItem(i, (char*)(_bstr_t)Holder); Holder = MySet->GetCollect("do_date");if
24、 (Holder.vt!=VT_NULL)m_list.SetItemText(i, 1, (char*)(_bstr_t)Holder); Holder = MySet->GetCollect("do_what");if(Holder.vt!=VT_NULL)m_list.SetItemText(i, 2, (char*)(_bstr_t)Holder); MySet->MoveNext(); MySet->Close();catch(_com_error& e) AfxMessageBox(e.ErrorMessage()
25、;m_list.SetRedraw(TRUE);return; m_list.SetRedraw(TRUE);void CDlgViewLog:OnClickListVllog(NMHDR* pNMHDR, LRESULT* pResult) int i = m_list.GetSelectionMark(); m_opr = m_list.GetItemText(i,0);m_date = m_list.GetItemText(i,1);m_op = m_list.GetItemText(i,2); UpdateData(FALSE);*pResult = 0;/DlgV
26、iewLog.cpp/刪除所有日志記錄的函數(shù)。void CDlgViewLog:OnBtnVlrmall() _bstr_t strSQL("TRUNCATE TABLE HOWDO"); trym_DBCnt->Execute(strSQL,NULL,adCmdText);catch(_com_error& e) AfxMessageBox(e.ErrorMessage();EndDialog(0); RefreshData();6、登錄窗口的設計和程序初始化在CDMSDlg:OnInitDialog()中加入這樣一段代碼:/DMSDlg.cpp/
27、彈出登錄界面CDlgLogIn dlg;doif (!dlg.DoModal()EndDialog(0); while (dlg.m_UsrName.GetLength()=0);它的目的是彈出圖1-12所示的登錄對話框,并從中獲得一個有效的用戶名。圖1-12 登錄界面得到有效用戶名后,程序用如下代碼:/ DMSDlg.cpp/建立數(shù)據(jù)庫連接,初始化成員變量/登錄數(shù)據(jù)庫,若失敗,則關閉程序。m_DBCnt.CreateInstance(_uuidof(Connection);CString sql_;sql_.Format("DSN=DMS;UID=%s;PWD=%s",d
28、lg.m_UsrName,dlg.m_UsrPwd);_bstr_t sql=sql_;/建立連接m_DBCnt->Open(sql,"","",-1);/初始化日志管理器 m_logMngr.Setup(m_DBCnt,dlg.m_UsrName);/記錄此次登錄m_logMngr.AddLog("登錄數(shù)據(jù)庫");catch(_com_error& e) AfxMessageBox(e.ErrorMessage();this->EndDialog(0); 在程序結束時關閉數(shù)據(jù)庫連接。/ DMSDlg.c
29、pp/關閉數(shù)據(jù)庫連接void CDMSDlg:OnDestroy() CDialog:OnDestroy();m_DBCnt->Close();7、主對話框界面的設計登錄完成后,顯示出主對話框。它的界面設計如圖1-13所示,單擊某個按鈕就能彈出某個功能的界面。圖1-13 主對話框界面以其中“設備代碼”按鈕為例,說明它的事件處理函數(shù)。代碼如下:/ DMSDlg.cpp/顯示設備代碼管理界面void CDMSDlg:OnBtnDevcode() CDlgDevcode dlg;dlg.Setup(m_DBCnt,&m_logMngr);this->ShowWindow(SW_H
30、IDE);dlg.DoModal();this->ShowWindow(SW_SHOW);其他按鈕的事件處理函數(shù),代碼與“設備代碼”按鈕的事件處理函數(shù)相同。8、設備代碼管理窗口的建立對話框類名為CdlgDevcode設計如圖1-14所示圖1-14 設備代碼管理窗口 /DlgDevcode.cpp/對話框的初始化BOOL CDlgDevcode:OnInitDialog() CDialog:OnInitDialog();/切分列表控件m_list.InsertColumn(0,"設備號");m_list.InsertColumn(1,"設備名");R
31、ECT rect;m_list.GetWindowRect(&rect);int wid = rect.right - rect.left;m_list.SetColumnWidth(0,wid/2);m_list.SetColumnWidth(1,wid/2);m_list.SetExtendedStyle(LVS_EX_FULLROWSELECT);/讀取已有數(shù)據(jù) RefreshData();return TRUE; / DlgDevcode.cpp/消息映射部分BEGIN_MESSAGE_MAP(CDlgDevcode, CDialog) /AFX_MSG_MAP(CD
32、lgDevcode)ON_NOTIFY(NM_CLICK, IDC_LIST_DEVCODE, OnClickListDevcode)/AFX_MSG_MAPEND_MESSAGE_MAP()/事件處理部分void CDlgDevcode:OnClickListDevcode(NMHDR* pNMHDR, LRESULT* pResult) int i = m_list.GetSelectionMark(); m_code = m_list.GetItemText(i,0);m_name = m_list.GetItemText(i,1); UpdateData(FALSE
33、);*pResult = 0;其余程序的清單如下:/ DlgDevcode.cpp : implementation file/ #include "stdafx.h"#include "DMS.h"#include "DlgDevcode.h" #ifdef _DEBUG#define new DEBUG_NEW#undef THIS_FILEstatic char THIS_FILE = _FILE_;#endif/ CDlgDevcode dialogCDlgDevcode:CDlgDevcode(CWnd*
34、 pParent /*=NULL*/): CDialog(CDlgDevcode:IDD, pParent)/AFX_DATA_INIT(CDlgDevcode)m_code = _T("");m_name = _T("");/AFX_DATA_INITm_DBCnt = NULL;m_log = NULL; void CDlgDevcode:DoDataExchange(CDataExchange* pDX)CDialog:DoDataExchange(pDX);/AFX_DATA_MAP(CDlgDevcode)DDX_Cont
35、rol(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)O
36、N_BN_CLICKED(IDC_BTN_DCDEL, OnBtnDcdel)ON_BN_CLICKED(IDC_BTN_DCUPD, OnBtnDcupd)/AFX_MSG_MAPEND_MESSAGE_MAP()/ CDlgDevcode message handlers/負責讀取已有數(shù)據(jù)的函數(shù)void CDlgDevcode:RefreshData()m_list.DeleteAllItems();m_list.SetRedraw(FALSE); _bstr_t strSQL("SELECT * FROM DEVICE_CODE");_RecordsetPt
37、r MySet; int i = 0;tryMySet.CreateInstance(_uuidof(Recordset); /執(zhí)行SOL語句讀取記錄MySet = m_DBCnt->Execute(strSQL,NULL,adCmdText);_variant_t Holder;while(!MySet->adoEOF) /取出code字段的數(shù)據(jù) Holder = MySet->GetCollect("code");if(Holder.vt!=VT_NULL)m_list.InsertItem(i, (char*)(_bstr_t)Holde
38、r); /取出name字段的數(shù)據(jù) Holder = MySet->GetCollect("name");if(Holder.vt!=VT_NULL)m_list.SetItemText(i, 1, (char*)(_bstr_t)Holder);MySet->MoveNext(); catch(_com_error& e) AfxMessageBox(e.ErrorMessage();m_list.SetRedraw(TRUE);return; m_list.SetRedraw(TRUE);/負責添加記錄的函數(shù)void CDlgDevcode:OnBtn
39、Dcadd() UpdateData(); CString sql_;sql_.Format("INSERT INTO DEVICE_CODE (code,name) VALUES('%s','%s')", m_code, m_name);_bstr_t sql = sql_; trym_DBCnt->Execute(sql,NULL,adCmdText);catch(_com_error& e) AfxMessageBox(e.ErrorMessage();return; m_log->AddLog(
40、"添加設備記錄。"); RefreshData(); /負責刪除記錄的函數(shù)void CDlgDevcode:OnBtnDcdel() UpdateData(); CString sql_;sql_.Format("DELETE FROM DEVICE_CODE WHERE CODE='%s'",m_code);_bstr_t sql = sql_;trym_DBCnt->Execute(sql,NULL,adCmdText); catch(_com_error& e) AfxMessageBox(e.ErrorMe
41、ssage();return; m_log->AddLog("刪除設備記錄。"); RefreshData(); /負責更新數(shù)據(jù)的函數(shù)void CDlgDevcode:OnBtnDcupd() UpdateData(); CString sql_;sql_.Format("UPDATE DEVICE_CODE SET NAME='%s' WHERE CODE='%s'",m_name,m_code);_bstr_t sql = sql_; trym_DBCnt->Execute(sql,NU
42、LL,adCmdText); catch(_com_error& e) AfxMessageBox(e.ErrorMessage();return; m_log->AddLog("更新設備記錄。"); RefreshData(); 9、庫存信息管理窗口的創(chuàng)建用戶可以在此新增、修改、刪除某種設備的記錄。單擊主對話框中的“庫存信息”按鈕,將出現(xiàn)圖1-15所示的界面。新增記錄時,用戶在“設備號”組合框中選擇一個設備號,在下面填入各種數(shù)量,之后單擊“新增”按鈕即可向表中增加記錄。修改記錄時,用戶單擊列表中某一行,程序利用1、8提到的方法,在窗口下面把這一行記錄的詳細信
43、息顯示出來,用戶即可對之修改。“設備號”這個子窗口初始化的時候有如下代碼:/DlgDev.cpp /對話框的初始化BOOL CDlgDev:OnInitDialog() CDialog:OnInitDialog();/切分列表控件m_list.InsertColumn(0,"設備號");m_list.InsertColumn(1,"現(xiàn)存數(shù)量");m_list.InsertColumn(2,"最大數(shù)量");m_list.InsertColumn(3,"最小數(shù)量");m_list.InsertColumn(4,&quo
44、t;總數(shù)");RECT rect;m_list.GetWindowRect(&rect);int wid = rect.right - rect.left;m_list.SetColumnWidth(0,wid/5);m_list.SetColumnWidth(1,wid/5);m_list.SetColumnWidth(2,wid/5);m_list.SetColumnWidth(3,wid/5);m_list.SetColumnWidth(4,wid/5); m_list.SetExtendedStyle(LVS_EX_FULLROWSELECT);
45、_RecordsetPtr pRst = NULL;IADORecordBinding *picRs = NULL; /Interface Pointer declared.(VC+ Extensions) CDevCodeRs rs; try_bstr_t strSQL("SELECT * FROM DEVICE_CODE"); TESTHR(pRst.CreateInstance(_uuidof(Recordset); /讀取所有的設備編號pRst = m_DBCnt->Execute(strSQL, NULL, adCmdText);/數(shù)據(jù)綁
46、定TESTHR(pRst->QueryInterface(_uuidof(IADORecordBinding),(LPVOID*)&picRs);TESTHR(picRs->BindToRecordset(&rs); int i = 0;while (!pRst->adoEOF) /向組合框控件中添加所有的設備編號m_devs.AddString(rs.m_sz_code);pRst->MoveNext();picRs->Release();pRst->Close();catch(_com_error& e) AfxMess
47、ageBox(e.ErrorMessage();EndDialog(0);return TRUE; RefreshData(); return TRUE; / return TRUE unless you set the focus to a control / EXCEPTION: OCX Property Pages should return FALSE圖1-15 庫存信息管理10、設備入庫信息管理在主對話框中單擊“入庫信息”按鈕就進入如圖1-16所示的界面。圖1-16 設備入庫信息管理界面下面是修改和刪除記錄的代碼:void CDlgViewDevIn:OnBtn
48、Viupdate() if (!UpdateData()return; CString sql_;sql_.Format(CString("SELECT * FROM DEVICE_IN WHERE in_date=")+DATEFMT, m_date);_bstr_t sql = sql_; _RecordsetPtr pRst = NULL;IADORecordBinding *picRs = NULL; /Interface Pointer declared.(VC+ Extensions) CDevInRs rs; tryTESTHR(
49、pRst.CreateInstance(_uuidof(Recordset);pRst->Open(sql,_variant_t(IDispatch *) m_DBCnt, true),adOpenKeyset,adLockOptimistic,adCmdText); /數(shù)據(jù)綁定TESTHR(pRst->QueryInterface(_uuidof(IADORecordBinding),(LPVOID*)&picRs);TESTHR(picRs->BindToRecordset(&rs); /填寫需要修改的數(shù)據(jù)strcpy(rs.m_sz_code,m_cod
50、e);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); /開始更新數(shù)據(jù)TESTHR(picRs->Update(&rs); /釋放ADO對象picRs->Release();pRst->Close();catch(_com_error& e) AfxMessageBox(
51、e.ErrorMessage();return; MessageBox("完成操作!");m_log->AddLog("修改入庫信息"); RefreshData(); void CDlgViewDevIn:OnBtnVidel() if (!UpdateData()return; CString sql_;sql_.Format(CString("DELETE FROM DEVICE_IN WHERE in_date=")+DATEFMT, m_date);_bstr_t sql =
52、sql_; try /執(zhí)行刪除數(shù)據(jù)的SOL語句m_DBCnt->Execute(sql, NULL, adCmdText);catch(_com_error& e) AfxMessageBox(e.ErrorMessage();return; MessageBox("完成操作!");m_log->AddLog("刪除入庫信息"); RefreshData();11、設備入庫窗口在主對話框中單擊“設備入庫”按鈕就進入如圖1-17所示的界面。 圖1-17 設備入庫登記界面下面就是單擊“確定”按鈕之后,更新數(shù)據(jù)庫操作的代
53、碼:/DlgDevIn.cpp/添加入庫記錄void CDlgDevIn:OnBtnDiadd() if (m_devs.GetCurSel()=CB_ERR)MessageBox("請選擇一個設備");return; if (!UpdateData()return; _RecordsetPtr pRst = NULL;CDevInRs rs; tryTESTHR(pRst.CreateInstance(_uuidof(Recordset); /打開數(shù)據(jù)庫表格到Recordest對象pRst->Open("device_in&q
54、uot;,_variant_t(IDispatch *) m_DBCnt, true),adOpenKeyset,adLockOptimistic,adCmdTable); /填寫新數(shù)據(jù)m_devs.GetWindowText(rs.m_sz_code,11);sprintf(rs.m_sz_date,"%d-%d-%d %d:%d:%d",m_date.GetYear(), m_date.GetMonth(), m_date.GetDay(),m_time.GetHour(), m_time.GetMinute(), m_time.GetSecond();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_
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 個人出國勞務合同范例
- 中建員工合同范例
- oem 代工合同范例
- 2025年盤園兒鋼項目發(fā)展計劃
- 個人醫(yī)院轉讓合同范例
- 個體診所勞動合同范例
- 中貿易合同范例
- 豐田汽車購車合同范例
- 現(xiàn)代教育技術中心述職
- 攜手共進游戲未來
- 2025屆小米全球校園招聘啟動(即將筆試)筆試參考題庫附帶答案詳解
- 中小學生校服安全
- 2023年寧夏回族自治區(qū)中考地理真題(原卷版)
- 2025年安全員C證考試題庫及答案-
- 2025年全球及中國電子雷管芯片模組行業(yè)頭部企業(yè)市場占有率及排名調研報告
- 小腸扭轉病人護理查房
- 第二十屆中央紀律檢查委員會第四次全體會議公報學習解讀
- 2025年國家財政部部屬單位招聘47人歷年高頻重點提升(共500題)附帶答案詳解
- 幼兒園歌唱活動基本流程
- 機場航站樓高空保潔服務方案
- 醫(yī)用氣體安全培訓
評論
0/150
提交評論