【正文】
GROUP BY GoodsID) B ON = WHERE = 0) C LEFT OUTER JOIN (SELECT GoodsID, isnull(SUM(AdjustNum), 0) AS AdjustNum FROM WHERE Type = 0 GROUP BY GoodsID) D ON = WHERE ( + ISNULL(, 0) 0) 功能擴(kuò)展控件(1).用戶名控件修改時(shí)顯示員工名:調(diào)用proSetUser過(guò)程,由當(dāng)前員工ID得到員工的名字。保存(登錄和修改):調(diào)用fucGetCurUserID函數(shù),由當(dāng)前員工名字得到員工ID。控件雙擊:調(diào)用基類中的tvUserDblClick過(guò)程,加載用戶列表。(2).倉(cāng)庫(kù)名控件修改時(shí)顯示倉(cāng)庫(kù)名:調(diào)用proSetWarehouse過(guò)程,由當(dāng)前倉(cāng)庫(kù)ID得到倉(cāng)庫(kù)的名字。保存(登錄和修改):調(diào)用fucGetCurWarehouseID函數(shù),由當(dāng)前倉(cāng)庫(kù)名字得到倉(cāng)庫(kù)ID。(3).合同編號(hào)控件修改時(shí)顯示合同編號(hào):將TdxDBGrid的合同編號(hào)傳給合同選擇控件里的cboSelBargain控件。保存(登錄和修改):取的是cboSelBargain里的數(shù)據(jù)。 字段計(jì)算(1).方法在TADOQuery的OnCalcFields事件里觸發(fā)計(jì)算字段的過(guò)程。(2).例子比如:當(dāng)要在界面上顯示幣種的中文字樣時(shí),我們用這樣的代碼來(lái)實(shí)現(xiàn):(這里舉入庫(kù)管理信息一覽的幣種顯示為例子)在qryInWarehouse(即TADOQuery控件)的OnCalcFields事件里case (39。Currency39。).AsInteger of 0: begin (39。cCurrency39。).AsString:=39。人民幣39。 。 end。 1: begin (39。cCurrency39。).AsString:=39。日元39。 。 end。 2: begin (39。cCurrency39。).AsString:=39。美元39。 。 end。(3).解釋這里的Currency為實(shí)際的字段,而cCurrency為計(jì)算后的字段,也就是Currency為0、2的值時(shí),相對(duì)應(yīng)的中文字樣就分別為人民幣、日元、美元。這樣我們?cè)趃ridInWarehouse(即TdxDBGrid控件)里關(guān)聯(lián)的就是cCurrency而不是Currency,那么最后在界面上顯示的自然就是中文了。屬性設(shè)置如下圖所示:(gridInWarehouse里的字段是和qryInWarehouse里的字段對(duì)應(yīng)的) 屬性及字段相關(guān)設(shè)置圖可以看到,在qryInWarehouse字段里有Currency和cCurrency,cCurrency就是計(jì)算出來(lái)的字段。在gridInWarehouse里的gridInWarehouseCurrecy里關(guān)聯(lián)的是Currency,顯示的時(shí)候已經(jīng)是計(jì)算后的cCurrency了。結(jié) 論本文從實(shí)際問(wèn)題出發(fā),詳細(xì)闡述了倉(cāng)庫(kù)管理模塊的設(shè)計(jì)與實(shí)現(xiàn)過(guò)程。在研究管理信息系統(tǒng)、Delphi開(kāi)發(fā)技術(shù)、第三方控件ExpressQuantumGrid、數(shù)據(jù)庫(kù)技術(shù)、事務(wù)處理、CS模式等的基礎(chǔ)上,再結(jié)合問(wèn)題的定義進(jìn)行分析,提出了整體的設(shè)計(jì)思想,最后結(jié)合實(shí)際實(shí)現(xiàn)了倉(cāng)庫(kù)管理模塊的開(kāi)發(fā)。通過(guò)本課題的研究與學(xué)習(xí),本人了解掌握了Delphi、數(shù)據(jù)庫(kù)等相關(guān)技術(shù),拓寬了知識(shí)領(lǐng)域,提高了知識(shí)水平,更重要的是了解并實(shí)踐了軟件開(kāi)發(fā)的整個(gè)流程。參考文獻(xiàn)[1] 中國(guó)軟件評(píng)測(cè)中心,計(jì)算機(jī)信息系統(tǒng)集成項(xiàng)目管理基礎(chǔ)[M].北京:電子工業(yè)出版社,20047 [2] Ralph 、George ,Principles of Information Systems,A Managerial Approach(Sixth Edition)[M].北京:機(jī)械工業(yè)出版社,20035[3] 梯云、李一軍,管理信息系統(tǒng)[M].北京:高等教育出版社,20007[4] 薛德黔等,軟件工程[M].北京:科學(xué)出版社,200510[5] 黃德才,數(shù)據(jù)庫(kù)原理及其應(yīng)用[M].北京:科學(xué)出版社,20028:167170[6] Konrad King,SQL編程實(shí)用大全(精華版)[M]. 北京:中國(guó)水電水利出版社,2005[7] 伍俊良,Borland Delphi 應(yīng)用與開(kāi)發(fā)教程[M].北京:機(jī)械工業(yè)出版社,20045[8] 暴風(fēng)雪科技,Delphi數(shù)據(jù)庫(kù)開(kāi)發(fā)與應(yīng)用[M].上海:上海科學(xué)普及出版社,20047[9] 溫尚清、易向東,謝在鵬等,Delphi案例開(kāi)發(fā)[M].北京:中國(guó)水利水電出版社,20053[10] 王志偉、黃超,Delphi企業(yè)經(jīng)營(yíng)管理系統(tǒng)開(kāi)發(fā)實(shí)例導(dǎo)航[M].北京:人民郵電出版社,200312致 謝經(jīng)過(guò)幾個(gè)月的努力,畢業(yè)設(shè)計(jì)已經(jīng)結(jié)束了,也取得了一定的成績(jī),這是大家團(tuán)結(jié)努力的結(jié)果。在此首先感謝沈國(guó)華指導(dǎo)老師、張偉指導(dǎo)老師的關(guān)心、指導(dǎo)和教誨。在他們的指導(dǎo)下,我學(xué)到了很多理論與實(shí)踐的知識(shí),這是我成長(zhǎng)路上的一筆巨大的財(cái)富,感謝他們的耐心指導(dǎo)。同時(shí),感謝李剛指導(dǎo)老師在畢業(yè)設(shè)計(jì)中對(duì)我的指導(dǎo)和幫助。其次,感謝實(shí)習(xí)公司(埃慕計(jì)算機(jī)技術(shù)有限公司)的領(lǐng)導(dǎo)為我提供了一個(gè)很好的學(xué)習(xí)環(huán)境與實(shí)踐機(jī)會(huì);感謝實(shí)習(xí)公司的前輩們?cè)谄綍r(shí)的指導(dǎo)與幫助;同時(shí)也感謝所有關(guān)心幫助過(guò)我的老師、同學(xué)和朋友們,感謝你們對(duì)我的支持。最后,感謝四年來(lái)教授過(guò)我課程以及給過(guò)我教導(dǎo)的各位老師,感謝你們對(duì)我在知識(shí)上的教育和思想上的正確引導(dǎo)。附 錄(1).資產(chǎn)視圖庫(kù)存的SQL語(yǔ)句():CREATE VIEW ASSELECT , , , DATEPART(year, ) AS RegisterYear, DATEPART( month, ) AS RegisterMonth,ISNULL(, 0) ISNULL(, 0) AS SurplusNum,, , , FROM(SELECT AssetID, BargainID, AssetName, AssetType, AssetFlg, RegisterDate, AssetNum,Unit,BuyPrice,Currency,BuyChMoney,CreateUserID,Warehouse,AssetProFROM WHERE (RepayDate IS NULL) AND (AssetStat = 0) AND DelFlg = 0) A LEFT OUTER JOIN(SELECT AssetID, IsNull(SUM(AdjustNum), 0) AS AdjustNumFROM WHERE Type = 1GROUP BY AssetID) B ON = WHERE (ISNULL(, 0) ISNULL(, 0) 0)(2).倉(cāng)庫(kù)管理各個(gè)頁(yè)面之間跳轉(zhuǎn)時(shí)加載數(shù)據(jù)////加載當(dāng)前活動(dòng)頁(yè)面數(shù)據(jù)//Programmed by pyy //procedure 。var sSQL:String。begin try :=crHourglass。 bLoading:= True。 //入庫(kù)頁(yè)面 if = tbsInWarehouseList then begin sSQL:= 39。 select GoodsID,BargainID,39。 + 39。 GoodsName,GoodsType,Quantity,39。 + 39。 Unit,UnitPrice,Currency,39。 + 39。 ChineseMoney,InDate,InMan,39。 + 39。 Warehouse,Memo,DATEPART(year, InDate) as InYear,39。 + 39。 DATEPART(month, InDate) as InMonth,39。 + 39。 DelFlg from SaleInWarehouse 39。 + 39。 where DelFlg=0 order by GoodsID DESC39。 if Not db_uPublic_GetRecordset(gConn,sSQL,qryInWarehouse) then。 //設(shè)置工具條可見(jiàn)性 if then proSetToolbarVisible(0) else proSetToolbarVisible(1)。 end //出庫(kù)頁(yè)面 else if = tbsOutWarehouseList then begin sSQL:= 39。 select OutID,GoodsID,BargainID,39。 + 39。 GoodsName,GoodsType,Quantity,Unit,UnitPrice,39。 + 39。 Currency,ChineseMoney,OutDate,OutMan,OutFlag,Memo,39。 + 39。 Warehouse,DATEPART(year, OutDate) as OutYear,39。 + 39。 DATEPART(month, OutDate) as OutMonth,39。 + 39。 DelFlg from SaleOutWarehouse 39。 + 39。 where DelFlg=0 order by OutID DESC39。 if Not db_uPublic_GetRecordset(gConn,sSQL,qryOutWarehouse) then。 //設(shè)置工具條可見(jiàn)性 if then proSetToolbarVisible(0) else proSetToolbarVisible(1)。 end //銷售庫(kù)存 else if = tbsWarehouseList then begin sSQL:= 39。select * from v_SaleSurplus39。 if Not db_uPublic_GetRecordset(gConn,sSQL,qrySaleOnWarehouse) then 。 end //資產(chǎn)庫(kù)存 else if = tbsAssetOnWarehouse then begin sSQL:= 39。select * from v_AssetSurplus39。 if Not db_uPublic_GetRecordset(gConn,sSQL,qryAssetOnWarehouse) then 。 end //盤點(diǎn)調(diào)整 else if = tbsCkeckAdjust then begin sSQL:= 39。 select AdjustID,GoodsID,AssetID,GoodsName,AdjustNum,39。 + 39。 AdjustDate,Type,Memo,ConfirmMan,39。 + 39。 DATEPART(year, AdjustDate) as Year,39。 + 39。 DATEPART(month, AdjustDate) as Month 39。 + 39。 from CkeckAdjust order by AdjustID DESC39。 if Not db_uPublic_GetRecordset(gConn,sSQL,qryCkeckAdjust) then 。 end。 bLoading:= False。 :=crDefault。 except On E:Exception do begin msgbox(39。加載數(shù)據(jù)失敗39。 + 13 + ,39。倉(cāng)庫(kù)管理39。,MB_OK + MB_ICONWARNING)。 end。 end。end。