箱體類零件工藝分析及知識(shí)庫(kù)研究(減速機(jī))
箱體類零件工藝分析及知識(shí)庫(kù)研究(減速機(jī)),箱體,零件,工藝,分析,知識(shí)庫(kù),研究,減速
學(xué)科門類: 工學(xué) 單位代碼 : 32022
箱體類零件知識(shí)庫(kù)及工藝
模板的研究
測(cè)試分析報(bào)告
學(xué)生姓名
于 光 耀
所學(xué)專業(yè)
機(jī)械設(shè)計(jì)制造及其自動(dòng)化
班 級(jí)
建材機(jī)械99(5)班
學(xué) 號(hào)
B9912027
指導(dǎo)教師
王 正 剛
鹽城工學(xué)院機(jī)械工程系
二○○三年六月
一、設(shè)計(jì)(論文)內(nèi)容
根據(jù)企業(yè)的工藝現(xiàn)狀,對(duì)減速器等產(chǎn)品中的箱體類零件進(jìn)行工藝分析,并規(guī)范化,
標(biāo)準(zhǔn)化,建立知識(shí)框架模型,確定工知識(shí)結(jié)構(gòu),根據(jù)所確定的工藝知識(shí)結(jié)構(gòu)錄入工
藝知識(shí),并建庫(kù)保存。建立工藝模板知,首先調(diào)用工藝模板編制模塊,根據(jù)工藝設(shè)計(jì)
規(guī)則,編制典型零件的工藝規(guī)程,并以此作為工藝規(guī)程模板。
二、設(shè)計(jì)(論文)依據(jù)
1、輸送機(jī)滾筒轉(zhuǎn)速為90r/min,減速器輸出功率為3.4kW。
2、運(yùn)輸機(jī)連續(xù)工作,單向轉(zhuǎn)動(dòng),載荷變化不大,空載起動(dòng),減速器小批生產(chǎn),使用
年限10年,大修期3年,兩班制工作,運(yùn)輸帶容許速度誤差為5%。
3、工藝決策規(guī)則的制定限制的條件為零件的總體信息,型面的特征信息,工藝常規(guī)
邏輯,企業(yè)的工藝習(xí)慣等。
三、技術(shù)要求
1. 對(duì)蓋套類零件的工藝術(shù)語(yǔ)、工藝知識(shí)、工藝參數(shù)等進(jìn)行規(guī)范化,標(biāo)準(zhǔn)化。
2、建立人機(jī)友好的工作界面,便于用戶對(duì)工藝知識(shí)的獲取、管理與維護(hù)。
3、采用Pro/E對(duì)零件進(jìn)行三維造型。
4、數(shù)據(jù)庫(kù)采用SQL Server2000,開發(fā)工具采用Delphi6.0/7.0。
.
四.畢業(yè)設(shè)計(jì)(論文)物化成果的具體內(nèi)容及要求
(具體內(nèi)容參照機(jī)械工程系畢業(yè)設(shè)計(jì)<論文>大綱及實(shí)施細(xì)則的有關(guān)要求填寫)
圖紙內(nèi)容及張數(shù)
減速器裝配圖 1 張(A0)
零件圖 4~6張(A1~A2)
-
實(shí)物內(nèi)容及要求
完成滿足該系統(tǒng)要求的原型系統(tǒng)
其他:
1、完成設(shè)計(jì)說(shuō)明書1份(字?jǐn)?shù)在2萬(wàn)字以上)
2、軟件測(cè)試分析報(bào)告各一份。
3、零件三維造型3~5個(gè)。
4、源程序代碼1份。
5、典型零件工藝模板1套。
五. 畢業(yè)設(shè)計(jì)(論文)進(jìn)度計(jì)劃
起訖日期
工作內(nèi)容
備 注
3.31——4.13
畢業(yè)實(shí)習(xí),收集資料。
4.14——4.27
資料整理,擬訂設(shè)計(jì)方案。
4.28——5.31
設(shè)計(jì)傳動(dòng)系統(tǒng),建立數(shù)據(jù)庫(kù)與工藝模板,系統(tǒng)測(cè)試。
6.1——6.15
編寫設(shè)計(jì)計(jì)算說(shuō)明書。
6.16——6.22
畢業(yè)設(shè)計(jì)資料審閱,修改。
6.23——6.27
分小組答辯。
六. 主要參考文獻(xiàn):
1、王先逵.機(jī)械制造工藝學(xué).北京:機(jī)械工業(yè)出版社,1995.
2、趙汝嘉.計(jì)算機(jī)輔助工藝設(shè)計(jì)(CAPP).北京:機(jī)械工業(yè)出版社,1995.
3、三味工作屋.SQL Server7.0管理指南.北京:中國(guó)水利水電出版社,1999.
4、戴曙.金屬切削機(jī)床.北京:機(jī)械工業(yè)出版社,1999.
5、朱寶庫(kù).機(jī)械設(shè)計(jì).哈爾濱:哈爾濱工業(yè)大學(xué)出版社,1994.
6、周開勤.機(jī)械零件手冊(cè).北京:高等教育出版社,1989.
7、李存斌.Delphi6.0,程序設(shè)計(jì)及其應(yīng)用開發(fā).北京,中國(guó)水利水電出版社,2002.
8、王細(xì)洋,王叔淳.工藝知識(shí)管理系統(tǒng)的設(shè)計(jì),計(jì)算機(jī)輔助設(shè)計(jì)與制造,
1998,(4):47-50.
9、恒永興,張振明,黃乃康等.CAPP面向?qū)ο笾R(shí)庫(kù)管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn),
機(jī)械科學(xué)與技術(shù).2001,20(1):140-142.
10、劉金坤,王勻,王雷剛等.基于關(guān)系型數(shù)據(jù)的專家系統(tǒng)結(jié)構(gòu)模型及實(shí)現(xiàn)技術(shù),
中國(guó)機(jī)械工程。2001,12(5):545-547.
七、其他
測(cè)試分析報(bào)告
一引言
基于PDM平臺(tái)的CAPP可以充分利用PDM的強(qiáng)大功能,實(shí)現(xiàn)工藝設(shè)計(jì)過(guò)程控制和并行工程。在國(guó)內(nèi)許多CIMS工程中,越來(lái)越多的企業(yè)開始選擇商用PDM軟件作為CIMS的集成平臺(tái)和并行工程的使用環(huán)境,開發(fā)基于PDM的CAPP系統(tǒng)必將成為一個(gè)發(fā)展趨勢(shì)。
1.編寫目的
編寫此測(cè)試報(bào)告的目的是為了保證基于PDM的CAPP系統(tǒng)的正常運(yùn)行,所以要通過(guò)測(cè)試,來(lái)發(fā)現(xiàn)錯(cuò)誤和異常情況,以保證程序在以后的運(yùn)行過(guò)程中盡可能的少出現(xiàn)故障。
2.背景
本此測(cè)試的是基于PDM的CAPP系統(tǒng)框架的構(gòu)建,是由鹽城工學(xué)院機(jī)械工程系提出的。它是由葛友華、劉道標(biāo)、王正剛老師共同負(fù)責(zé),由本屆畢業(yè)生張健、劉忠明同學(xué)作為畢業(yè)設(shè)計(jì)的課題協(xié)同規(guī)劃和開發(fā),以期能建立起基于產(chǎn)品數(shù)據(jù)管理的計(jì)算機(jī)輔助工藝過(guò)程規(guī)劃的實(shí)際應(yīng)用系統(tǒng),以期能夠投入到企業(yè)的實(shí)際應(yīng)用中。由于測(cè)試環(huán)境與實(shí)際運(yùn)行環(huán)境之間可能存在著差異,所以在實(shí)際運(yùn)行過(guò)程中難免存在著不足之處,有待于進(jìn)一步的完善。
3.定義
CAD: 計(jì)算機(jī)輔助設(shè)計(jì),全稱為Computer-Aided Design;
CAM: 計(jì)算機(jī)輔助制造,全稱為Computer-Aided Manufacturing;
PDM: 產(chǎn)品數(shù)據(jù)管理,全稱為Product Data Management;
CAPP:計(jì)算機(jī)輔助工藝規(guī)程設(shè)計(jì),全稱為Computer-Aided Process Planning;
CIMS:計(jì)算機(jī)集成制造系統(tǒng),全稱為Computer integrated manufacturing system。
4.參考資料
(1)劉道標(biāo).基于PDM的CAPP系統(tǒng)框架的研究與實(shí)現(xiàn).南京航天航空大學(xué)碩士學(xué)位論文,2002年12月。
(2)李善平,劉乃若,郭鳴等著.產(chǎn)品數(shù)據(jù)標(biāo)準(zhǔn)與PDM.清華大學(xué)出版社,2002年4月。
(3)魏志強(qiáng),王先逵,楊志剛,吳丹. 集成制造環(huán)境下的計(jì)算機(jī)輔助工藝設(shè)計(jì)框架系統(tǒng)2001年2月21號(hào)。
(4)《軟件標(biāo)準(zhǔn)和指導(dǎo)性技術(shù)文件》.航空工業(yè)標(biāo)準(zhǔn)HB6465—90。
二測(cè)試概要
本次測(cè)試主要是對(duì)下面的程序進(jìn)行的:
(1) 登陸界面的測(cè)試
測(cè)試動(dòng)態(tài)鏈接數(shù)據(jù)庫(kù),輸入服務(wù)器名、服務(wù)器密碼;
測(cè)試登陸用戶的合法性,輸入用戶名和密碼;
(2) 系統(tǒng)主界面的測(cè)試
測(cè)試簡(jiǎn)單的WEB瀏覽器能否應(yīng)用;
測(cè)試各應(yīng)用模塊能否正常顯示;
(3) 用戶管理界面的測(cè)試
測(cè)試用戶管理輸入數(shù)據(jù)是否有效;
測(cè)試添加、修改、刪除、關(guān)閉按鈕是否有效,是否有異常情況;
(4) 數(shù)據(jù)備份的測(cè)試
測(cè)試數(shù)據(jù)庫(kù)中的內(nèi)容能否以文件形式保存?zhèn)浞荩?
(5) 項(xiàng)目管理模塊的測(cè)試
測(cè)試該模塊所有界面中的按鈕能否正常實(shí)現(xiàn)功能;
測(cè)試是否對(duì)所有項(xiàng)目都分配完成后才能進(jìn)入下一流程;
(6) 產(chǎn)品管理模塊的測(cè)試
測(cè)試產(chǎn)品管理模塊中所有功能是否能夠正常實(shí)現(xiàn);
測(cè)試產(chǎn)品管理模塊中的功能是否符合需求;
(7) 工藝文件管理模塊的測(cè)試
測(cè)試新建工藝、打開工藝、工藝提取、工藝預(yù)覽、工藝打印能否正常實(shí)現(xiàn)功能;
測(cè)試該界面中的各個(gè)子模塊是否有異常情況;
(8) 工序文件管理模塊的測(cè)試(圖略)
測(cè)試該模塊中新建工序文件、打開工序文件是否正常實(shí)現(xiàn)功能;
測(cè)試該模塊中各個(gè)功能是否正常,有無(wú)異常情況;
(9) 工藝數(shù)據(jù)管理模塊的測(cè)試
測(cè)試該模塊中典型工藝數(shù)據(jù)維護(hù)、知識(shí)庫(kù)管理、切削用量和加工余量能否正常實(shí)現(xiàn)功能;
測(cè)試各個(gè)子界面中的按鈕等是否能實(shí)現(xiàn)其功能,有無(wú)異常情況;
(10) 工藝設(shè)計(jì)模塊的測(cè)試
測(cè)試該模塊中基于實(shí)例的工藝生成和基于模板的實(shí)例生成、工藝路線能否正常實(shí)現(xiàn)其功能;
測(cè)試該模塊中各界面的需求功能能否正常實(shí)現(xiàn),有無(wú)異常情況要處理;
(11) 系統(tǒng)查詢模塊的測(cè)試
測(cè)試基于WEB的查詢模塊能否實(shí)現(xiàn)其功能;
測(cè)試與后臺(tái)數(shù)據(jù)庫(kù)鏈接有無(wú)異常情況;
三測(cè)試結(jié)果及發(fā)現(xiàn)
(1) 測(cè)試1
輸入錯(cuò)誤的數(shù)據(jù)庫(kù)服務(wù)器名稱,系統(tǒng)報(bào)錯(cuò),數(shù)據(jù)庫(kù)自動(dòng)斷開,系統(tǒng)自動(dòng)關(guān)閉。
輸入正確的數(shù)據(jù)庫(kù)服務(wù)器名稱,服務(wù)器密碼錯(cuò)誤,系統(tǒng)無(wú)法進(jìn)入,關(guān)閉后重新登陸。
輸入正確的數(shù)據(jù)庫(kù)服務(wù)器名稱和密碼,用戶名出錯(cuò)時(shí),無(wú)法登陸系統(tǒng)。
輸入正確的數(shù)據(jù)庫(kù)服務(wù)器名稱和密碼,正確的用戶名,密碼錯(cuò)誤時(shí)無(wú)法登陸系統(tǒng)。
通過(guò)以上測(cè)試得出結(jié)果,只有當(dāng)以上各項(xiàng)都符合時(shí),方能成功登陸本系統(tǒng)。
(2) 測(cè)試2
測(cè)試主界面能否實(shí)現(xiàn)簡(jiǎn)單的WEB瀏覽器功能,在地址欄中輸入所要訪問(wèn)的主頁(yè)地址,測(cè)試在相應(yīng)的WebBrower處能否正常顯示網(wǎng)頁(yè)內(nèi)容。
測(cè)試主菜單中的各個(gè)鏈接是否正常,點(diǎn)擊時(shí)能否顯示相應(yīng)的界面。
通過(guò)反復(fù)的測(cè)試,發(fā)現(xiàn)了一些意想不到的問(wèn)題,尤其時(shí)在集成整個(gè)系統(tǒng)界面的時(shí)候,通過(guò)不斷的調(diào)整最終集合成主界面。
(3) 測(cè)試3
測(cè)試用戶管理界面時(shí),當(dāng)姓名輸入框?yàn)榭諘r(shí),無(wú)法對(duì)登陸用戶進(jìn)行添加、修改、刪除;當(dāng)?shù)顷懹脩魹橄到y(tǒng)管理員時(shí),擁有最高權(quán)限可以對(duì)整個(gè)用戶管理界面進(jìn)行維護(hù),當(dāng)?shù)顷懹脩魹槠胀ㄓ脩艋蚬に嚾藛T時(shí),無(wú)法運(yùn)用用戶管理界面中的添加、修改、刪除按鈕進(jìn)行用戶權(quán)限管理。剛開始時(shí),當(dāng)用戶欄為空時(shí)也可以對(duì)用戶管理界面進(jìn)行修改。
(4) 測(cè)試4
測(cè)試數(shù)據(jù)備份界面時(shí),當(dāng)?shù)顷懹脩魹橄到y(tǒng)管理員時(shí)可以對(duì)基礎(chǔ)資源庫(kù)進(jìn)行數(shù)據(jù)備份,以文件形式保存到硬盤中,而當(dāng)普通用戶登陸時(shí)則沒有此權(quán)限功能。而在具體實(shí)現(xiàn)此功能時(shí),經(jīng)過(guò)反復(fù)調(diào)試后,總算實(shí)現(xiàn)了此功能。
(5) 測(cè)試5
測(cè)試項(xiàng)目管理模塊時(shí),由于要實(shí)現(xiàn)通用化,所以在建立后臺(tái)數(shù)據(jù)庫(kù)時(shí)要建立關(guān)聯(lián)庫(kù),具體實(shí)現(xiàn)的時(shí)候用SQL查詢語(yǔ)言來(lái)實(shí)現(xiàn),當(dāng)項(xiàng)目分配完成后要進(jìn)入下一個(gè)流程,關(guān)鍵在于要實(shí)現(xiàn)如下需求,只有當(dāng)所有項(xiàng)目都分配完畢后才能進(jìn)入下一個(gè)工作流程,這就要逐一讀取數(shù)據(jù)庫(kù)中關(guān)于項(xiàng)目分配的信息,來(lái)確定是否能夠?qū)崿F(xiàn)。但由于開發(fā)者自身?xiàng)l件的限制,導(dǎo)致后臺(tái)數(shù)據(jù)庫(kù)中的內(nèi)容不夠充實(shí),只是實(shí)現(xiàn)了一定的設(shè)計(jì)思想。
(6) 測(cè)試6
測(cè)試產(chǎn)品管理模塊時(shí),首先是對(duì)產(chǎn)品設(shè)計(jì)管理界面的測(cè)試,利用樹形結(jié)構(gòu)作導(dǎo)航,利用SQL查詢語(yǔ)言,使左邊的產(chǎn)品或零件與右邊的詳細(xì)信息相對(duì)應(yīng),當(dāng)指針指到產(chǎn)品樹中的某一零件時(shí)就觸發(fā)事件,在右邊相應(yīng)的位置顯示所查詢到的詳細(xì)信息,如零件的總體信息、工藝信息、其它信息,還可以查看其相應(yīng)的圖形,如果在數(shù)據(jù)庫(kù)中未添加零件圖形,則要到產(chǎn)品數(shù)據(jù)管理界面提供的圖形管理處加入與零件相對(duì)應(yīng)的圖形,在測(cè)試過(guò)程中發(fā)現(xiàn)采用樹形結(jié)構(gòu)來(lái)導(dǎo)航是非常方便的,不過(guò)在維護(hù)過(guò)程中對(duì)樹形結(jié)構(gòu)管理時(shí),容易產(chǎn)生數(shù)據(jù)庫(kù)更新不足,產(chǎn)生一些意外的出錯(cuò)信息,經(jīng)過(guò)反復(fù)測(cè)試后,調(diào)整了數(shù)據(jù)庫(kù)的結(jié)構(gòu),終于實(shí)現(xiàn)了初步的功能,而工藝信息部分是通過(guò)顯示按扭來(lái)觸發(fā)事件,當(dāng)零件的工藝已經(jīng)制定好了以后,則通過(guò)查詢來(lái)檢索后臺(tái)數(shù)據(jù)庫(kù)零件工藝匯總中的關(guān)于此零件的工藝信息,如果零件的工藝未制定,則進(jìn)入新建工藝界面對(duì)零件工藝進(jìn)行編輯,而工藝設(shè)計(jì)可以運(yùn)用兩種方法,一種是基于實(shí)例的工藝生成,還有是基于模板的工藝生成,測(cè)試過(guò)程中主要是測(cè)試產(chǎn)品樹中的零件與工藝信息是否能關(guān)聯(lián),以及后臺(tái)數(shù)據(jù)庫(kù)能否正常工作,經(jīng)過(guò)修改后已經(jīng)實(shí)現(xiàn)了初步功能。
(7) 測(cè)試7
測(cè)試過(guò)程中主要是對(duì)新建工藝界面、打開工藝、工藝提取、工藝預(yù)覽、工藝打印能否正常實(shí)現(xiàn)功能;測(cè)試該界面中的各個(gè)子模塊是否有異常情況;在測(cè)試過(guò)程中主要是要使各個(gè)界面都能實(shí)現(xiàn)其初步功能,使之不出現(xiàn)異常情況,開始測(cè)試時(shí)總出現(xiàn)一些小錯(cuò)誤,最后在程序中加入了異常處理后在運(yùn)行時(shí)就把錯(cuò)誤給排除拉,
在動(dòng)態(tài)輸入數(shù)據(jù)時(shí),可以選擇數(shù)據(jù)庫(kù)中的內(nèi)容添加到數(shù)據(jù)輸入框中,然后再通過(guò)按鈕觸發(fā)事件,保存到后臺(tái)數(shù)據(jù)庫(kù)中。通過(guò)動(dòng)態(tài)輸入的數(shù)據(jù)與保存到數(shù)據(jù)庫(kù)中的內(nèi)容相比較,最后確認(rèn)程序是否能滿足功能要求。
(8) 測(cè)試8
主要是測(cè)試工序管理模塊中的界面能否達(dá)到功能要求,測(cè)試該模塊中新建工序文件、打開工序文件是否正常實(shí)現(xiàn)功能;測(cè)試該模塊中各個(gè)功能是否正常,有無(wú)異常情況;通過(guò)在新建工序文件界面中動(dòng)態(tài)輸入數(shù)據(jù),然后以文件形式保存到電腦中,然后再通過(guò)打開工序文件界面把剛才保存的文件打開來(lái),查看數(shù)據(jù)是否與動(dòng)態(tài)輸入的數(shù)據(jù)一致。如果數(shù)據(jù)不一致則說(shuō)明程序還存在著問(wèn)題,需要修改再調(diào)試,如果顯示的數(shù)據(jù)與動(dòng)態(tài)輸入的數(shù)據(jù)完全一致,說(shuō)明程序已初步實(shí)現(xiàn)了需求功能,可以對(duì)下一面進(jìn)行測(cè)試。
(9) 測(cè)試9
主要是測(cè)試該模塊中典型工藝數(shù)據(jù)維護(hù)、知識(shí)庫(kù)管理、切削用量和加工余量界面能否正常實(shí)現(xiàn)其功能,最后測(cè)試各個(gè)子界面中的按鈕等是否能實(shí)現(xiàn)其功能,有無(wú)異常情況;在測(cè)試過(guò)程中,對(duì)典型工藝數(shù)據(jù)維護(hù)界面測(cè)試主要是動(dòng)態(tài)輸入數(shù)據(jù),
再點(diǎn)擊相應(yīng)的功能按鈕,查看生成的數(shù)據(jù)是否與動(dòng)態(tài)輸入的數(shù)據(jù)相一致,如果得出的結(jié)果確實(shí)如此,則說(shuō)明所編寫的程序是正確的,反之則需要修改,再不斷調(diào)試,直到實(shí)現(xiàn)需求功能為止。
(10) 測(cè)試10
主要是測(cè)試該模塊中基于實(shí)例的工藝生成和基于模板的工藝生成、工藝路線能否正常實(shí)現(xiàn)其功能;測(cè)試該模塊中各界面的需求功能能否正常實(shí)現(xiàn),有無(wú)異常情況要處理;根據(jù)上面所示的界面,首先是查詢與零件相對(duì)應(yīng)的工藝,然后在網(wǎng)格中顯示出來(lái),再點(diǎn)擊導(dǎo)出工藝按鈕,把檢索到的工藝單存儲(chǔ)到臨時(shí)表中,再顯示在網(wǎng)格中,以便使用者進(jìn)行修改,直到達(dá)到要求為止,然后再存儲(chǔ)到零件工藝匯總表中,如果這一過(guò)程中輸入與輸出的數(shù)據(jù)相一致,則說(shuō)明程序已實(shí)現(xiàn)了功能需求,反之,則要進(jìn)行修改,調(diào)試直到達(dá)到要求為止。
(11) 測(cè)試11
主要是測(cè)試基于WEB的查詢模塊,點(diǎn)擊左邊的查詢按鈕,在右邊對(duì)應(yīng)的位置顯示鏈接的內(nèi)容,如果未出現(xiàn)相應(yīng)的界面,則說(shuō)明源程序還需要修改,調(diào)試,直到能滿足功能需求為止。
四測(cè)試結(jié)論
1. 功能1
(1)能力
登陸界面已具備了動(dòng)態(tài)連接數(shù)據(jù)庫(kù)的能力,以及辨別登陸用戶合法性的能力,經(jīng)過(guò)多次測(cè)試,已證明了登陸界面擁有了以上能力。
(2)限制
在測(cè)試過(guò)程中,發(fā)現(xiàn)了問(wèn)題,開始時(shí)無(wú)法動(dòng)態(tài)連接遠(yuǎn)程數(shù)據(jù)庫(kù),后來(lái)通過(guò)改進(jìn),才能夠連接到遠(yuǎn)程數(shù)據(jù)庫(kù)。
2. 功能2
(1)能力
系統(tǒng)主界面已具備作為簡(jiǎn)單的WEB瀏覽器的能力,能夠訪問(wèn)INTERNET,另外也達(dá)到了連接各個(gè)系統(tǒng)子模塊的能力,經(jīng)過(guò)多次測(cè)試,證明已具備了以上能力。
(2)限制
由于只是一個(gè)簡(jiǎn)單的WEB瀏覽器,所以跟IE相比還有一定的差距。
3. 功能3
(1)能力
用戶管理界面已經(jīng)具備了對(duì)使用本系統(tǒng)的用戶進(jìn)行管理的能力,當(dāng)?shù)顷懹脩魹橄到y(tǒng)管理員時(shí)可以對(duì)任何用戶進(jìn)行修改其所有信息,也可以添加和刪除用戶;而當(dāng)?shù)顷懹脩魹槠胀ㄓ脩魰r(shí),則沒有權(quán)限修改用戶信息的能力。
4. 功能4
(1)能力
數(shù)據(jù)備份界面已經(jīng)具備了對(duì)基礎(chǔ)庫(kù)以文件形式保存的能力,經(jīng)過(guò)多次測(cè)試后,已經(jīng)能夠?qū)崿F(xiàn)功能需求,能夠保存數(shù)據(jù),并能夠在系統(tǒng)中顯示以文件形式保存的數(shù)據(jù)。
(2)限制
由于數(shù)據(jù)本身已保存在數(shù)據(jù)庫(kù)中,以文件形式再保存、備份只是為了防止意外事故發(fā)生,導(dǎo)致數(shù)據(jù)丟失,欠缺是為能所有用到的數(shù)據(jù)庫(kù)進(jìn)行備份。
5. 功能5
(1)能力
項(xiàng)目管理模塊主要是對(duì)通用化的項(xiàng)目進(jìn)行分配任務(wù)、編制任務(wù),經(jīng)過(guò)這一流程后,最后審核項(xiàng)目。經(jīng)過(guò)測(cè)試,證明該模塊已具備了此能力。
(2)限制
由于對(duì)項(xiàng)目?jī)?nèi)容及流程知道有限,導(dǎo)致建立的數(shù)據(jù)庫(kù)內(nèi)容教少,還不具備通用性,有待于改進(jìn)、提高。
6.功能6
(1) 能力
產(chǎn)品管理模塊主要是用來(lái)對(duì)企業(yè)中的產(chǎn)品自制件、標(biāo)準(zhǔn)件、外協(xié)件等進(jìn)行分類管理,對(duì)自制件如果未制定工藝則到相應(yīng)的新建工藝界面制定工藝,如果已經(jīng)制定則能夠顯示其工藝內(nèi)容。經(jīng)過(guò)多次測(cè)試,證明該模塊已經(jīng)具備了以上能力。
(2) 限制
由于設(shè)計(jì)人員水平的限制,采用樹形結(jié)構(gòu)導(dǎo)航時(shí),沒做到把樹結(jié)構(gòu)做到無(wú)窮級(jí)數(shù)展開,有待于進(jìn)一步提高。
7.功能7
(1) 能力
工藝文件管理模塊主要具有工藝、打開工藝、工藝提取、工藝預(yù)覽、工藝打印的能力,經(jīng)過(guò)多次測(cè)試后,證明該模塊已經(jīng)具備了以上能力。
8. 功能8
(1) 能力
工序文件管理模塊已經(jīng)具備了新建工序卡片和顯示已經(jīng)保存的工序卡片的能力,經(jīng)反復(fù)測(cè)試后,證明該模塊已經(jīng)具備了以上能力。
9. 功能9
(1) 能力
工藝數(shù)據(jù)管理模塊主要是對(duì)典型工藝數(shù)據(jù)維護(hù)、知識(shí)庫(kù)管理、切削用量和加工余量庫(kù)查詢。經(jīng)過(guò)多次測(cè)試后,證明該模塊已經(jīng)具備了以上能力。
10.功能10
(1) 能力
工藝設(shè)計(jì)管理模塊主要是實(shí)現(xiàn)基于實(shí)例的工藝生成和基于模板的實(shí)例生成、工藝路線的查詢的能力。
(2)由于開發(fā)設(shè)計(jì)時(shí)間和自身水平的限制,還未能實(shí)現(xiàn)基于特征的工藝生成的能力,有待于進(jìn)一步提高。
11.功能11
(1) 能力
系統(tǒng)查詢模塊主要是用來(lái)查詢基礎(chǔ)資源庫(kù)中的信息,經(jīng)過(guò)測(cè)試后已具備了此能力。
(2) 限制
由于開發(fā)者本身對(duì)ACTIVEFORM以及網(wǎng)絡(luò)發(fā)布了解不夠,還未能把用Delphi制作的網(wǎng)頁(yè)發(fā)布到服務(wù)器上,以達(dá)到基于WEB的查詢能力。
五評(píng)價(jià)
1. 能力
經(jīng)測(cè)試已證實(shí)了本軟件的能力。
2. 缺陷與限制
經(jīng)測(cè)試證實(shí)的軟件缺陷和限制已經(jīng)在測(cè)試結(jié)果和發(fā)現(xiàn)中交代過(guò),綜合以上的缺陷和限制,對(duì)本軟件存在著一定程度的影響。
六測(cè)試總結(jié)
通過(guò)此次測(cè)試,基于PDM的CAPP系統(tǒng)得到了很大的改進(jìn),但要消耗了測(cè)試人員很大的時(shí)間,設(shè)計(jì)人員更是消耗了大量的機(jī)時(shí)才使系統(tǒng)性能有了一定的提高,不過(guò)通過(guò)測(cè)試后,對(duì)于軟件本身來(lái)說(shuō)是必不可少的工作,有利于系統(tǒng)性能的改進(jìn)。
unit xjgy;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ComCtrls, Grids, DBGrids, StdCtrls, OleCtrls, VOLOVIEWXLib_TLB,
Buttons, ExtCtrls,shellapi, Menus, DB, ADODB;
type
Tl_xjgy = class(TForm)
StatusBar1: TStatusBar;
Splitter2: TSplitter;
Splitter1: TSplitter;
SaveDialog1: TSaveDialog;
ADOQuery8: TADOQuery;
ADOQuery7: TADOQuery;
ADOQuery6: TADOQuery;
ADOQuery5: TADOQuery;
ADOQuery4: TADOQuery;
ADOQuery3: TADOQuery;
DataSource1: TDataSource;
ADOQuery2: TADOQuery;
ADOQuery1: TADOQuery;
PopupMenu1: TPopupMenu;
N1: TMenuItem;
N2: TMenuItem;
Panel3: TPanel;
Splitter3: TSplitter;
Splitter4: TSplitter;
Panel4: TPanel;
Panel7: TPanel;
SpeedButton2: TSpeedButton;
SpeedButton1: TSpeedButton;
SpeedButton5: TSpeedButton;
SpeedButton4: TSpeedButton;
SpeedButton6: TSpeedButton;
SpeedButton3: TSpeedButton;
Panel8: TPanel;
AvViewX1: TAvViewX;
Panel5: TPanel;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Panel6: TPanel;
DBGrid1: TDBGrid;
Panel2: TPanel;
Panel9: TPanel;
Label6: TLabel;
Panel10: TPanel;
Panel11: TPanel;
Label7: TLabel;
Label8: TLabel;
Edit7: TEdit;
Edit8: TEdit;
Panel12: TPanel;
Label4: TLabel;
Label5: TLabel;
Edit4: TEdit;
Edit5: TEdit;
Panel1: TPanel;
TreeView1: TTreeView;
TreeView2: TTreeView;
TreeView3: TTreeView;
TreeView4: TTreeView;
TreeView5: TTreeView;
TreeView6: TTreeView;
OpenDialog1: TOpenDialog;
N3: TMenuItem;
N4: TMenuItem;
ADOQuery9: TADOQuery;
ADOQuery10: TADOQuery;
Label9: TLabel;
Label10: TLabel;
Edit6: TEdit;
Edit9: TEdit;
ADOQuery8DSDesigner: TIntegerField;
ADOQuery8DSDesigner2: TIntegerField;
ADOQuery8DSDesigner3: TStringField;
ADOQuery8DSDesigner4: TStringField;
ADOQuery8DSDesigner5: TStringField;
ADOQuery8DSDesigner6: TStringField;
ADOQuery8DSDesigner7: TStringField;
ADOQuery8DSDesigner8: TStringField;
ADOQuery8DSDesigner9: TStringField;
ADOQuery8DSDesigner10: TStringField;
ADOQuery8DSDesigner11: TFloatField;
ADOQuery8DSDesigner12: TStringField;
ADOQuery8DSDesigner13: TStringField;
ADOQuery8DSDesigner14: TStringField;
ADOQuery8DSDesigner15: TStringField;
ADOQuery8DSDesigner16: TStringField;
ADOQuery8DSDesigner17: TStringField;
ADOQuery8DSDesigner18: TStringField;
ADOQuery8DSDesigner19: TStringField;
ADOQuery8DSDesigner20: TStringField;
tuxing2: TBlobField;
ADOQuery2DSDesigner: TIntegerField;
ADOQuery2DSDesigner2: TIntegerField;
ADOQuery2DSDesigner3: TStringField;
ADOQuery2DSDesigner4: TStringField;
ADOQuery2DSDesigner5: TStringField;
ADOQuery2DSDesigner6: TStringField;
ADOQuery2DSDesigner7: TStringField;
ADOQuery2DSDesigner8: TStringField;
ADOQuery2DSDesigner9: TStringField;
ADOQuery2DSDesigner10: TStringField;
ADOQuery2DSDesigner11: TFloatField;
ADOQuery2DSDesigner12: TStringField;
ADOQuery2DSDesigner13: TStringField;
ADOQuery2DSDesigner14: TStringField;
ADOQuery2DSDesigner15: TStringField;
ADOQuery2DSDesigner16: TStringField;
ADOQuery2DSDesigner17: TStringField;
ADOQuery2DSDesigner18: TStringField;
ADOQuery2DSDesigner19: TStringField;
ADOQuery2DSDesigner20: TStringField;
tuxing: TBlobField;
procedure FormCreate(Sender: TObject);
procedure SpeedButton3Click(Sender: TObject);
procedure DBGrid1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure TreeView1Change(Sender: TObject; Node: TTreeNode);
procedure TreeView2Change(Sender: TObject; Node: TTreeNode);
procedure TreeView3Change(Sender: TObject; Node: TTreeNode);
procedure TreeView4Change(Sender: TObject; Node: TTreeNode);
procedure TreeView5Change(Sender: TObject; Node: TTreeNode);
procedure TreeView6Change(Sender: TObject; Node: TTreeNode);
procedure N1Click(Sender: TObject);
procedure N2Click(Sender: TObject);
procedure SpeedButton6Click(Sender: TObject);
procedure SpeedButton4Click(Sender: TObject);
procedure SpeedButton5Click(Sender: TObject);
procedure SpeedButton1Click(Sender: TObject);
procedure SpeedButton2Click(Sender: TObject);
procedure N3Click(Sender: TObject);
procedure N4Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
procedure LoadgcmcTREE;
procedure LoadgcnrTREE;
procedure LoadjckTREE;
procedure LoadjjkTREE;
procedure LoaddjkTREE;
procedure LoadljkTREE;
end;
var
l_xjgy: Tl_xjgy;
tup,wjj:string;
implementation
uses unit1;
{$R *.dfm}
procedure Tl_xjgy.FormCreate(Sender: TObject);
var
i,ss:integer;
serveString: string;
begin
wjj:=GetCurrentDir;
//下面一部分是動(dòng)態(tài)連接數(shù)據(jù)庫(kù)
adoquery1.ConnectionString:='Provider=SQLOLEDB.1;Password='+trim(form1.Edit4.Text)+';Persist Security Info=True;User ID=sa;Initial Catalog=bysjcapp;Data Source='+trim(form1.Edit3.Text)+'';
adoquery1.SQL.Clear;
adoquery1.SQL.Add('select * from 工序名稱庫(kù)') ;
adoquery1.open;
adoquery2.ConnectionString:='Provider=SQLOLEDB.1;Password='+trim(form1.Edit4.Text)+';Persist Security Info=True;User ID=sa;Initial Catalog=bysjcapp;Data Source='+trim(form1.Edit3.Text)+'';
adoquery2.SQL.Clear;
adoquery2.SQL.Add('select * from 機(jī)械加工工藝過(guò)程卡片') ;
adoquery2.open;
adoquery3.ConnectionString:='Provider=SQLOLEDB.1;Password='+trim(form1.Edit4.Text)+';Persist Security Info=True;User ID=sa;Initial Catalog=bysjcapp;Data Source='+trim(form1.Edit3.Text)+'';
adoquery3.SQL.Clear;
adoquery3.SQL.Add('select * from 工序內(nèi)容') ;
adoquery3.open;
adoquery4.ConnectionString:='Provider=SQLOLEDB.1;Password='+trim(form1.Edit4.Text)+';Persist Security Info=True;User ID=sa;Initial Catalog=bysjcapp;Data Source='+trim(form1.Edit3.Text)+'';
adoquery4.SQL.Clear;
adoquery4.SQL.Add('select * from 機(jī)床庫(kù)') ;
adoquery4.open;
adoquery5.ConnectionString:='Provider=SQLOLEDB.1;Password='+trim(form1.Edit4.Text)+';Persist Security Info=True;User ID=sa;Initial Catalog=bysjcapp;Data Source='+trim(form1.Edit3.Text)+'';
adoquery5.SQL.Clear;
adoquery5.SQL.Add('select * from 夾具庫(kù)') ;
adoquery5.open;
adoquery6.ConnectionString:='Provider=SQLOLEDB.1;Password='+trim(form1.Edit4.Text)+';Persist Security Info=True;User ID=sa;Initial Catalog=bysjcapp;Data Source='+trim(form1.Edit3.Text)+'';
adoquery6.SQL.Clear;
adoquery6.SQL.Add('select * from 刀具庫(kù)') ;
adoquery6.open;
adoquery7.ConnectionString:='Provider=SQLOLEDB.1;Password='+trim(form1.Edit4.Text)+';Persist Security Info=True;User ID=sa;Initial Catalog=bysjcapp;Data Source='+trim(form1.Edit3.Text)+'';
adoquery7.SQL.Clear;
adoquery7.SQL.Add('select * from 量具庫(kù)') ;
adoquery7.open;
adoquery8.ConnectionString:='Provider=SQLOLEDB.1;Password='+trim(form1.Edit4.Text)+';Persist Security Info=True;User ID=sa;Initial Catalog=bysjcapp;Data Source='+trim(form1.Edit3.Text)+'';
adoquery8.SQL.Clear;
adoquery8.SQL.Add('select * from 機(jī)械加工工藝過(guò)程卡片2') ;
adoquery8.open;
adoquery9.ConnectionString:='Provider=SQLOLEDB.1;Password='+trim(form1.Edit4.Text)+';Persist Security Info=True;User ID=sa;Initial Catalog=bysjcapp;Data Source='+trim(form1.Edit3.Text)+'';
adoquery9.SQL.Clear;
adoquery9.SQL.Add('select * from 零件名稱匯總') ;
adoquery9.open;
adoquery10.ConnectionString:='Provider=SQLOLEDB.1;Password='+trim(form1.Edit4.Text)+';Persist Security Info=True;User ID=sa;Initial Catalog=bysjcapp;Data Source='+trim(form1.Edit3.Text)+'';
adoquery10.SQL.Clear;
adoquery10.SQL.Add('select * from 零件工藝匯總') ;
adoquery10.open;
LoadgcnrTREE;
LoadjckTREE;
LoadjjkTREE;
LoaddjkTREE;
LoadljkTREE;
LoadgcmcTREE;
treeview1.Visible:=true;
treeview2.Visible:=false;
treeview3.Visible:=false;
treeview4.Visible:=false;
treeview5.Visible:=false;
treeview6.Visible:=false;
adoquery2.First;
while not adoquery2.Eof do
begin
adoquery2.Delete;
end;
ss:=10;
for i:=1 to 15 do
begin
adoquery2.Append;
adoquery2['工序標(biāo)志']:=ss;
adoquery2.Post;
ss:=ss+10;
end;
adoquery2.Active:=false;
adoquery2.Active:=true;
//改變網(wǎng)格大小
dbgrid1.Columns[0].Width:=50;
dbgrid1.Columns[1].Width:=100;
dbgrid1.Columns[2].Width:=100;
dbgrid1.Columns[3].Width:=60;
dbgrid1.Columns[4].Width:=60;
dbgrid1.Columns[5].Width:=70;
dbgrid1.Columns[6].Width:=70;
dbgrid1.Columns[7].Width:=70;
dbgrid1.Columns[8].Width:=70;
dbgrid1.Columns[9].Width:=60;
end;
procedure Tl_xjgy.LoadgcmcTREE;
var
RootNode, CatNode : TTreeNode;
Category : string;
begin
treeview1.Items.Clear;
RootNode := treeview1.Items.Add( nil, '工序名稱' );
RootNode.ImageIndex := 0; { Specify which bitmap to use }
RootNode.SelectedIndex := 0;
adoquery1.First;
while not adoquery1.Eof do
begin
Category := adoquery1.fieldbyname('工序名稱').AsString;
CatNode := treeview1.Items.AddChild( RootNode, Category );
CatNode.ImageIndex := 5;
CatNode.SelectedIndex := 2;
adoquery1.Next;
end;
end;
procedure Tl_xjgy.LoadgcnrTREE;
var
RootNode, CatNode : TTreeNode;
Category : string;
begin
treeview2.Items.Clear;
RootNode := treeview2.Items.Add( nil, '工序內(nèi)容' );
RootNode.ImageIndex := 0; { Specify which bitmap to use }
RootNode.SelectedIndex := 0;
adoquery3.First;
while not adoquery3.Eof do
begin
Category := adoquery3.fieldbyname('工序內(nèi)容').AsString;
CatNode := treeview2.Items.AddChild( RootNode, Category );
CatNode.ImageIndex := 5;
CatNode.SelectedIndex := 2;
adoquery3.Next;
end;
end;
procedure Tl_xjgy.LoadjckTREE;
var
RootNode, TipNode, CatNode : TTreeNode;
ss,Category,jidian : string;
begin
treeview3.Items.Clear;
adoquery4.First;
while not adoquery4.Eof do
begin
if (adoquery4['機(jī)床標(biāo)志1']=0) and (adoquery4['機(jī)床標(biāo)志2']=0) and (adoquery4['機(jī)床標(biāo)志3']=0)then
begin
ss:=adoquery4['機(jī)床名稱'];
RootNode := treeview3.Items.Add( nil, ss );
RootNode.ImageIndex := 0; { Specify which bitmap to use }
RootNode.SelectedIndex := 0;
end;
if (adoquery4['機(jī)床標(biāo)志1']=0) and (adoquery4['機(jī)床標(biāo)志2']=0) and (adoquery4['機(jī)床標(biāo)志3']=1)then
begin
Category := adoquery4.fieldbyname('機(jī)床分類').AsString;
CatNode := treeview3.Items.AddChild( RootNode, Category );
CatNode.ImageIndex := 5;
CatNode.SelectedIndex := 2;
end;
if (adoquery4['機(jī)床標(biāo)志1']=1) and (adoquery4['機(jī)床標(biāo)志2']=1) and (adoquery4['機(jī)床標(biāo)志3']=1)then
begin
jidian := adoquery4.fieldbyname('機(jī)床型號(hào)').AsString;
tipNode := treeview3.Items.addchild( catnode,jidian );
tipNode.ImageIndex := 5;
tipNode.SelectedIndex := 2;
end;
adoquery4.Next;
end;
end;
procedure Tl_xjgy.LoadjjkTREE;
var
RootNode, TipNode, CatNode : TTreeNode;
ss,Category,jidian : string;
begin
treeview4.Items.Clear;
adoquery5.First;
while not adoquery5.Eof do
begin
if (adoquery5['夾具標(biāo)志1']=0) and (adoquery5['夾具標(biāo)志2']=0) and (adoquery5['夾具標(biāo)志3']=0)then
begin
ss:=adoquery5['夾具總稱'];
RootNode := treeview4.Items.Add( nil, ss );
RootNode.ImageIndex := 0; { Specify which bitmap to use }
RootNode.SelectedIndex := 0;
end;
if (adoquery5['夾具標(biāo)志1']=0) and (adoquery5['夾具標(biāo)志2']=0) and (adoquery5['夾具標(biāo)志3']=1)then
begin
Category := adoquery5.fieldbyname('夾具分類').AsString;
CatNode := treeview4.Items.AddChild( RootNode, Category );
CatNode.ImageIndex := 5;
CatNode.SelectedIndex := 2;
end;
if (adoquery5['夾具標(biāo)志1']=1) and (adoquery5['夾具標(biāo)志2']=1) and (adoquery5['夾具標(biāo)志3']=1)then
begin
jidian := adoquery5.fieldbyname('夾具名稱').AsString;
tipNode := treeview4.Items.addchild( catnode,jidian );
tipNode.ImageIndex := 5;
tipNode.SelectedIndex := 2;
end;
adoquery5.Next;
end;
end;
procedure Tl_xjgy.LoaddjkTREE;
var
RootNode,CatNode : TTreeNode;
ss,Category : string;
begin
treeview5.Items.Clear;
adoquery6.First;
while not adoquery6.Eof do
begin
if (adoquery6['刀具標(biāo)志1']=0) and (adoquery6['刀具標(biāo)志2']=1) then
begin
ss:=adoquery6['刀具名稱'];
RootNode := treeview5.Items.Add( nil, ss );
RootNode.ImageIndex := 0; { Specify which bitmap to use }
RootNode.SelectedIndex := 0;
end;
if (adoquery6['刀具標(biāo)志1']=1) and (adoquery6['刀具標(biāo)志2']=0) then
begin
Category := adoquery6.fieldbyname('刀具規(guī)格').AsString;
CatNode := treeview5.Items.AddChild( RootNode, Category );
CatNode.ImageIndex := 5;
CatNode.SelectedIndex := 2;
end;
adoquery6.Next;
end;
end;
procedure Tl_xjgy.LoadljkTREE;
var
RootNode, CatNode : TTreeNode;
ss,Category : string;
begin
treeview6.Items.Clear;
adoquery7.First;
while not adoquery7.Eof do
begin
if (adoquery7['量具標(biāo)志1']=0) and (adoquery7['量具標(biāo)志2']=1) then
begin
ss:=adoquery7['量具名稱'];
RootNode := treeview6.Items.Add( nil, ss );
RootNode.ImageIndex := 0; { Specify which bitmap to use }
RootNode.SelectedIndex := 0;
end;
if (adoquery7['量具標(biāo)志1']=1) and (adoquery7['量具標(biāo)志2']=0) then
begin
Category := adoquery7.fieldbyname('量具規(guī)格').AsString;
CatNode := treeview6.Items.AddChild( RootNode, Category );
CatNode.ImageIndex := 5;
CatNode.SelectedIndex := 2;
end;
adoquery7.Next;
end;
end;
procedure Tl_xjgy.SpeedButton3Click(Sender: TObject);
begin
close;
end;
procedure Tl_xjgy.DBGrid1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if (DBGrid1.SelectedIndex = 1) then
begin
//調(diào)用相應(yīng)樹形結(jié)構(gòu)
treeview1.Visible:=true;
treeview2.Visible:=false;
treeview3.Visible:=false;
treeview4.Visible:=false;
treeview5.Visible:=false;
treeview6.Visible:=false;
end;
if (DBGrid1.SelectedIndex = 2) then
begin
treeview2.Visible:=true;
treeview1.Visible:=false;
treeview3.Visible:=false;
treeview4.Visible:=false;
treeview5.Visible:=false;
treeview6.Visible:=false;
end;
if (DBGrid1.SelectedIndex = 5) then
begin
treeview3.Visible:=true;
treeview2.Visible:=false;
treeview1.Visible:=false;
treeview4.Visible:=false;
treeview5.Visible:=false;
treeview6.Visible:=false;
end;
if (DBGrid1.SelectedIndex = 6) then
begin
treeview4.Visible:=true;
treeview2.Visible:=false;
treeview3.Visible:=false;
treeview1.Visible:=false;
treeview5.Visible:=false;
treeview6.Visible:=false;
end;
if (DBGrid1.SelectedIndex = 7) then
begin
treeview5.Visible:=true;
treeview2.Visible:=false;
treeview3.Visible:=false;
treeview4.Visible:=false;
treeview1.Visible:=false;
treeview6.Visible:=false;
end;
if (DBGrid1.SelectedIndex = 8) then
begin
treeview6.Visible:=true;
treeview2.Visible:=false;
treeview3.Visible:=false;
treeview4.Visible:=false;
treeview5.Visible:=false;
treeview1.Visible:=false;
end;
end;
procedure Tl_xjgy.TreeView1Change(Sender: TObject; Node: TTreeNode);
begin
if (DBGrid1.SelectedIndex = 1) then
begin
adoquery2.Edit;
adoquery2['工序名稱']:=TreeView1.Selected.Text;
adoquery2.Post;
end;
end;
procedure Tl_xjgy.TreeView2Change(Sender: TObject; Node: TTreeNode);
begin
if (DBGrid1.SelectedIndex = 2) then
begin
adoquery2.Edit;
adoquery2['工序內(nèi)容']:=TreeView2.Selected.Text;
adoquery2.Post;
end;
end;
procedure Tl_xjgy.TreeView3Change(Sender: TObject; Node: TTreeNode);
begin
if (DBGrid1.SelectedIndex = 5) then
begin
adoquery2.Edit;
adoquery2['機(jī)床設(shè)備']:=TreeView3.Selected.Text;
adoquery2.Post;
end;
end;
procedure Tl_xjgy.TreeView4Change(Sender: TObject; Node: TTreeNode);
begin
if (DBGrid1.SelectedIndex = 6) then
begin
adoquery2.Edit;
adoquery2['夾具設(shè)備']:=TreeView4.Selected.Text;
adoquery2.Post;
end;
end;
procedure Tl_xjgy.TreeView5Change(Sender: TObject; Node: TTreeNode);
begin
if (DBGrid1.SelectedIndex = 7) then
begin
adoquery2.Edit;
adoquery2['刀具設(shè)備']:=TreeView5.Selected.Text;
adoquery2.Post;
end;
end;
procedure Tl_xjgy.TreeView6Change(Sender: TObject; Node: TTreeNode);
begin
if (DBGrid1.SelectedIndex = 8) then
begin
adoquery2.Edit;
adoquery2['量具設(shè)備']:=TreeView6.Selected.Text;
adoquery2.Post;
end;
end;
procedure Tl_xjgy.N1Click(Sender: TObject);
begin
avviewx1.ClearMarkup ;
if opendialog1.Execute then
begin
tup:=opendialog1.filename;
end;
avviewx1.src :=tup ;
if tup<>'' then
begin
avviewx1.Visible:=true;
end
else begin end;
end;
procedure Tl_xjgy.N2Click(Sender: TObject);
begin
avviewx1.ClearMarkup;
avviewx1.Visible:=false;
end;
procedure Tl_xjgy.SpeedButton6Click(Sender: TObject);
var
s:integer;
begin
adoquery2.Last;
s:=adoquery2['工序標(biāo)志'];
adoquery2.Append;
s:=s+10;
adoquery2['工序標(biāo)志']:=s;
end;
procedure Tl_xjgy.SpeedButton4Click(Sender: TObject);
var
aa,bb:integer;
begin
try
begin
aa:=adoquery2['工序標(biāo)志'];
aa:=aa-1;
adoquery2.Prior;
bb:=adoquery2['工序標(biāo)志'];
adoquery2.Insert;
if aa=bb then
begin
bb:=bb-1;
adoquery2['工序標(biāo)志']:=bb;
end else adoquery2['工序標(biāo)志']:=aa;
adoquery2.Post;
end
except showmessage('請(qǐng)將指針上移,謝謝');
end;
adoquery2.Active:=false;
adoquery2.Active:=true;
end;
procedure Tl_xjgy.SpeedButton5Click(Sender: TObject);
begin
adoquery2.delete;
adoquery2.Refresh;
end;
procedure Tl_xjgy.SpeedButton1Click(Sender: TObject);
begin
if (edit4.Text<>'')and (edit8.Text<>'') then
begin
if MessageDlg('是否要提交?',mtConfirmation, [mbYes, mbNo], 0 )=mryes then
begin
adoquery2.Refresh;
adoquery2.First;
adoquery2.Edit;
adoquery2['產(chǎn)品名稱']:=edit4.Text;
adoquery2['產(chǎn)品型號(hào)']:=edit7.Text;
adoquery2['零件圖號(hào)']:=edit5.Text;
adoquery2['零件名稱']:=edit8.Text;
adoquery2['編制日期']:=edit1.Text;
adoquery2['校對(duì)日期']:=edit2.Text;
adoquery2['審核日期']:=edit3.Text;
adoquery2['材料牌號(hào)']:=edit6.Text;
adoquery2['毛坯種類']:=edit9.Text;
tuxing.LoadFromFile(tup) ;
adoquery2.Post;
adoquery9.Append;
adoquery9['零件名稱']:=edit8.Text;
adoquery9.Post;
adoquery2.First;
repeat
begin
adoquery10.Append;
adoquery10['零件名稱']:=edit8.Text;
adoquery10['產(chǎn)品名稱']:=adoquery2['產(chǎn)品名稱'];
adoquery10['產(chǎn)品型號(hào)']:=adoquery2['產(chǎn)品型號(hào)'];
adoquery10['零件圖號(hào)']:=adoquery2['零件圖號(hào)'];
adoquery10['編制日期']:=adoquery2['編制日期'];
adoquery10['校對(duì)日期']:=adoquery2['校對(duì)日期'];
adoquery10['審核日期']:=adoquery2['審核日期'];
adoquery10['材料牌號(hào)']:=adoquery2['材料牌號(hào)'];
adoquery10['毛坯種類']:=adoquery2['毛坯種類'];
adoquery10['圖形']:=adoquery2['圖形'];
adoquery10['工序號(hào)']:=adoquery2['工序號(hào)'];
adoquery10.fieldbyname('工序名稱').AsString:=adoquery2.fieldbyname('工序名稱').AsString;
adoquery10.fieldbyname('工序內(nèi)容').AsString:=adoquery2.fieldbyname('工序內(nèi)容').AsString;
adoquery10.fieldbyname('車間').AsString:=adoquery2.fieldbyname('車間').AsString;
adoquery10.fieldbyname('工段').AsString:=adoquery2.fieldbyname('工段').AsString;
adoquery10.fieldbyname('機(jī)床設(shè)備').AsString:=adoquery2.fieldbyname('機(jī)床設(shè)備').AsString;
adoquery10.fieldbyname('夾具設(shè)備').AsString:=adoquery2.fieldbyname('夾具設(shè)備').AsString;
adoquery10.fieldbyname('刀具設(shè)備').AsString:=adoquery2.fieldbyname('刀具設(shè)備').AsString;
adoquery10.fieldbyname('量具設(shè)備').AsString:=adoquery2.fieldbyname('量具設(shè)備').AsString;
adoquery10.fieldbyname('單件工時(shí)').AsString:=adoquery2.fieldbyname('單件工時(shí)').AsString;
adoquery10.Post;
adoquery2.Next;
end;
until adoquery2.Eof;
showmessage('提交成功!');
speedbutton1.Enabled:=false;
end;
end else showmessage('請(qǐng)輸入產(chǎn)品和零件名稱!');
end;
procedure Tl_xjgy.SpeedButton2Click(Sender: TObject);
var
filename:string;
begin
adoq
收藏