【正文】
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) 功能擴展控件(1).用戶名控件修改時顯示員工名:調(diào)用proSetUser過程,由當(dāng)前員工ID得到員工的名字。保存(登錄和修改):調(diào)用fucGetCurUserID函數(shù),由當(dāng)前員工名字得到員工ID??丶p擊:調(diào)用基類中的tvUserDblClick過程,加載用戶列表。(2).倉庫名控件修改時顯示倉庫名:調(diào)用proSetWarehouse過程,由當(dāng)前倉庫ID得到倉庫的名字。保存(登錄和修改):調(diào)用fucGetCurWarehouseID函數(shù),由當(dāng)前倉庫名字得到倉庫ID。(3).合同編號控件修改時顯示合同編號:將TdxDBGrid的合同編號傳給合同選擇控件里的cboSelBargain控件。保存(登錄和修改):取的是cboSelBargain里的數(shù)據(jù)。 字段計算(1).方法在TADOQuery的OnCalcFields事件里觸發(fā)計算字段的過程。(2).例子比如:當(dāng)要在界面上顯示幣種的中文字樣時,我們用這樣的代碼來實現(xiàn):(這里舉入庫管理信息一覽的幣種顯示為例子)在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為實際的字段,而cCurrency為計算后的字段,也就是Currency為0、2的值時,相對應(yīng)的中文字樣就分別為人民幣、日元、美元。這樣我們在gridInWarehouse(即TdxDBGrid控件)里關(guān)聯(lián)的就是cCurrency而不是Currency,那么最后在界面上顯示的自然就是中文了。屬性設(shè)置如下圖所示:(gridInWarehouse里的字段是和qryInWarehouse里的字段對應(yīng)的) 屬性及字段相關(guān)設(shè)置圖可以看到,在qryInWarehouse字段里有Currency和cCurrency,cCurrency就是計算出來的字段。在gridInWarehouse里的gridInWarehouseCurrecy里關(guān)聯(lián)的是Currency,顯示的時候已經(jīng)是計算后的cCurrency了。結(jié) 論本文從實際問題出發(fā),詳細(xì)闡述了倉庫管理模塊的設(shè)計與實現(xiàn)過程。在研究管理信息系統(tǒng)、Delphi開發(fā)技術(shù)、第三方控件ExpressQuantumGrid、數(shù)據(jù)庫技術(shù)、事務(wù)處理、CS模式等的基礎(chǔ)上,再結(jié)合問題的定義進行分析,提出了整體的設(shè)計思想,最后結(jié)合實際實現(xiàn)了倉庫管理模塊的開發(fā)。通過本課題的研究與學(xué)習(xí),本人了解掌握了Delphi、數(shù)據(jù)庫等相關(guān)技術(shù),拓寬了知識領(lǐng)域,提高了知識水平,更重要的是了解并實踐了軟件開發(fā)的整個流程。參考文獻[1] 中國軟件評測中心,計算機信息系統(tǒng)集成項目管理基礎(chǔ)[M].北京:電子工業(yè)出版社,20047 [2] Ralph 、George ,Principles of Information Systems,A Managerial Approach(Sixth Edition)[M].北京:機械工業(yè)出版社,20035[3] 梯云、李一軍,管理信息系統(tǒng)[M].北京:高等教育出版社,20007[4] 薛德黔等,軟件工程[M].北京:科學(xué)出版社,200510[5] 黃德才,數(shù)據(jù)庫原理及其應(yīng)用[M].北京:科學(xué)出版社,20028:167170[6] Konrad King,SQL編程實用大全(精華版)[M]. 北京:中國水電水利出版社,2005[7] 伍俊良,Borland Delphi 應(yīng)用與開發(fā)教程[M].北京:機械工業(yè)出版社,20045[8] 暴風(fēng)雪科技,Delphi數(shù)據(jù)庫開發(fā)與應(yīng)用[M].上海:上??茖W(xué)普及出版社,20047[9] 溫尚清、易向東,謝在鵬等,Delphi案例開發(fā)[M].北京:中國水利水電出版社,20053[10] 王志偉、黃超,Delphi企業(yè)經(jīng)營管理系統(tǒng)開發(fā)實例導(dǎo)航[M].北京:人民郵電出版社,200312致 謝經(jīng)過幾個月的努力,畢業(yè)設(shè)計已經(jīng)結(jié)束了,也取得了一定的成績,這是大家團結(jié)努力的結(jié)果。在此首先感謝沈國華指導(dǎo)老師、張偉指導(dǎo)老師的關(guān)心、指導(dǎo)和教誨。在他們的指導(dǎo)下,我學(xué)到了很多理論與實踐的知識,這是我成長路上的一筆巨大的財富,感謝他們的耐心指導(dǎo)。同時,感謝李剛指導(dǎo)老師在畢業(yè)設(shè)計中對我的指導(dǎo)和幫助。其次,感謝實習(xí)公司(埃慕計算機技術(shù)有限公司)的領(lǐng)導(dǎo)為我提供了一個很好的學(xué)習(xí)環(huán)境與實踐機會;感謝實習(xí)公司的前輩們在平時的指導(dǎo)與幫助;同時也感謝所有關(guān)心幫助過我的老師、同學(xué)和朋友們,感謝你們對我的支持。最后,感謝四年來教授過我課程以及給過我教導(dǎo)的各位老師,感謝你們對我在知識上的教育和思想上的正確引導(dǎo)。附 錄(1).資產(chǎn)視圖庫存的SQL語句():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).倉庫管理各個頁面之間跳轉(zhuǎn)時加載數(shù)據(jù)////加載當(dāng)前活動頁面數(shù)據(jù)//Programmed by pyy //procedure 。var sSQL:String。begin try :=crHourglass。 bLoading:= True。 //入庫頁面 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è)置工具條可見性 if then proSetToolbarVisible(0) else proSetToolbarVisible(1)。 end //出庫頁面 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è)置工具條可見性 if then proSetToolbarVisible(0) else proSetToolbarVisible(1)。 end //銷售庫存 else if = tbsWarehouseList then begin sSQL:= 39。select * from v_SaleSurplus39。 if Not db_uPublic_GetRecordset(gConn,sSQL,qrySaleOnWarehouse) then 。 end //資產(chǎn)庫存 else if = tbsAssetOnWarehouse then begin sSQL:= 39。select * from v_AssetSurplus39。 if Not db_uPublic_GetRecordset(gConn,sSQL,qryAssetOnWarehouse) then 。 end //盤點調(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。倉庫管理39。,MB_OK + MB_ICONWARNING)。 end。 end。end。