購買設(shè)計請充值后下載,,資源目錄下的文件所見即所得,都可以點(diǎn)開預(yù)覽,,資料完整,充值下載可得到資源目錄里的所有文件。。?!咀ⅰ浚篸wg后綴為CAD圖紙,doc,docx為WORD文檔,原稿無水印,可編輯。。。具體請見文件預(yù)覽,有不明白之處,可咨詢QQ:12401814
一、設(shè)計(論文)內(nèi)容
根據(jù)企業(yè)的工藝現(xiàn)狀,對減速器等產(chǎn)品中的箱體類零件進(jìn)行工藝分析,并規(guī)范化,
標(biāo)準(zhǔn)化,建立知識框架模型,確定工知識結(jié)構(gòu),根據(jù)所確定的工藝知識結(jié)構(gòu)錄入工
藝知識,并建庫保存。建立工藝模板知,首先調(diào)用工藝模板編制模塊,根據(jù)工藝設(shè)計
規(guī)則,編制典型零件的工藝規(guī)程,并以此作為工藝規(guī)程模板。
二、設(shè)計(論文)依據(jù)
1、輸送機(jī)滾筒轉(zhuǎn)速為90r/min,減速器輸出功率為3.4kW。
2、運(yùn)輸機(jī)連續(xù)工作,單向轉(zhuǎn)動,載荷變化不大,空載起動,減速器小批生產(chǎn),使用
年限10年,大修期3年,兩班制工作,運(yùn)輸帶容許速度誤差為5%。
3、工藝決策規(guī)則的制定限制的條件為零件的總體信息,型面的特征信息,工藝常規(guī)
邏輯,企業(yè)的工藝習(xí)慣等。
三、技術(shù)要求
1. 對蓋套類零件的工藝術(shù)語、工藝知識、工藝參數(shù)等進(jìn)行規(guī)范化,標(biāo)準(zhǔn)化。
2、建立人機(jī)友好的工作界面,便于用戶對工藝知識的獲取、管理與維護(hù)。
3、采用Pro/E對零件進(jìn)行三維造型。
4、數(shù)據(jù)庫采用SQL Server2000,開發(fā)工具采用Delphi6.0/7.0。
.
四.畢業(yè)設(shè)計(論文)物化成果的具體內(nèi)容及要求
(具體內(nèi)容參照機(jī)械工程系畢業(yè)設(shè)計<論文>大綱及實(shí)施細(xì)則的有關(guān)要求填寫)
圖紙內(nèi)容及張數(shù)
減速器裝配圖 1 張(A0)
零件圖 4~6張(A1~A2)
-
實(shí)物內(nèi)容及要求
完成滿足該系統(tǒng)要求的原型系統(tǒng)
其他:
1、完成設(shè)計說明書1份(字?jǐn)?shù)在2萬字以上)
2、軟件測試分析報告各一份。
3、零件三維造型3~5個。
4、源程序代碼1份。
5、典型零件工藝模板1套。
五. 畢業(yè)設(shè)計(論文)進(jìn)度計劃
起訖日期
工作內(nèi)容
備 注
3.31——4.13
畢業(yè)實(shí)習(xí),收集資料。
4.14——4.27
資料整理,擬訂設(shè)計方案。
4.28——5.31
設(shè)計傳動系統(tǒng),建立數(shù)據(jù)庫與工藝模板,系統(tǒng)測試。
6.1——6.15
編寫設(shè)計計算說明書。
6.16——6.22
畢業(yè)設(shè)計資料審閱,修改。
6.23——6.27
分小組答辯。
六. 主要參考文獻(xiàn):
1、王先逵.機(jī)械制造工藝學(xué).北京:機(jī)械工業(yè)出版社,1995.
2、趙汝嘉.計算機(jī)輔助工藝設(shè)計(CAPP).北京:機(jī)械工業(yè)出版社,1995.
3、三味工作屋.SQL Server7.0管理指南.北京:中國水利水電出版社,1999.
4、戴曙.金屬切削機(jī)床.北京:機(jī)械工業(yè)出版社,1999.
5、朱寶庫.機(jī)械設(shè)計.哈爾濱:哈爾濱工業(yè)大學(xué)出版社,1994.
6、周開勤.機(jī)械零件手冊.北京:高等教育出版社,1989.
7、李存斌.Delphi6.0,程序設(shè)計及其應(yīng)用開發(fā).北京,中國水利水電出版社,2002.
8、王細(xì)洋,王叔淳.工藝知識管理系統(tǒng)的設(shè)計,計算機(jī)輔助設(shè)計與制造,
1998,(4):47-50.
9、恒永興,張振明,黃乃康等.CAPP面向?qū)ο笾R庫管理系統(tǒng)的設(shè)計與實(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ù),
中國機(jī)械工程。2001,12(5):545-547.
七、其他
學(xué)科門類: 工學(xué) 單位代碼 : 32022
箱體類零件知識庫及工藝
模板的研究
測試分析報告
學(xué)生姓名
于 光 耀
所學(xué)專業(yè)
機(jī)械設(shè)計制造及其自動化
班 級
建材機(jī)械99(5)班
學(xué) 號
B9912027
指導(dǎo)教師
王 正 剛
鹽城工學(xué)院機(jī)械工程系
二○○三年六月
鹽城工學(xué)院畢業(yè)設(shè)計說明書
摘 要
隨著計算機(jī)在制造型企業(yè)中的運(yùn)用,通過計算機(jī)進(jìn)行工藝的輔助設(shè)計以成為可能,CAPP的運(yùn)用將為提高工藝文件的質(zhì)量,縮短生產(chǎn)準(zhǔn)備周期,并為廣大工藝人員從繁瑣、復(fù)雜的勞動中解放出來提供一條切實(shí)可行的途徑。本文介紹了箱體類零件的加工工藝分析以及對其知識庫與工藝模板的建立和表示。知識庫主要提供計算機(jī)輔助工藝過程設(shè)計(CAPP)系統(tǒng)中箱體類零件工藝設(shè)計所需的工藝決策規(guī)劃、機(jī)床、刀具、量具等信息資源。本文在基于對箱體類零件工藝分析的同時,還描述了通用計算機(jī)輔助工藝過程設(shè)計(CAPP)所依據(jù)的知識庫的表達(dá)、知識的存取,系統(tǒng)工藝模板的建立等一系列問題。
關(guān)鍵詞:箱體 計算機(jī)輔助工藝設(shè)計 知識庫
Abstract
With computer application of enterprise of making etc., carry on through computer craft supplementary to design in order to become possible, Application of CAPP for improve craft quality of file, shorten and produce cycle of planning, And liberate from tedious, complicated work and offer a feasible way for the masses of craft personnel.This text introduce case body processing technology of part analyse and to knowledge base and craft foundation and expression of template their. Knowledge base offer Computer Aided Process Planning (CAPP) System case body part technological design necessary craft make policy plan, lathe, cutter, measuring tool information resources. This text while because of analysing about the body part craft of the case, describe all-purpose Computer Aided Process Planning (CAPP) Expression, access of knowledge of knowledge base that base on, systematic craft foundation a series of problem of template.
Key words : Case CAPP Knowledge base
2
測試分析報告
一引言
基于PDM平臺的CAPP可以充分利用PDM的強(qiáng)大功能,實(shí)現(xiàn)工藝設(shè)計過程控制和并行工程。在國內(nèi)許多CIMS工程中,越來越多的企業(yè)開始選擇商用PDM軟件作為CIMS的集成平臺和并行工程的使用環(huán)境,開發(fā)基于PDM的CAPP系統(tǒng)必將成為一個發(fā)展趨勢。
1.編寫目的
編寫此測試報告的目的是為了保證基于PDM的CAPP系統(tǒng)的正常運(yùn)行,所以要通過測試,來發(fā)現(xiàn)錯誤和異常情況,以保證程序在以后的運(yùn)行過程中盡可能的少出現(xiàn)故障。
2.背景
本此測試的是基于PDM的CAPP系統(tǒng)框架的構(gòu)建,是由鹽城工學(xué)院機(jī)械工程系提出的。它是由葛友華、劉道標(biāo)、王正剛老師共同負(fù)責(zé),由本屆畢業(yè)生張健、劉忠明同學(xué)作為畢業(yè)設(shè)計的課題協(xié)同規(guī)劃和開發(fā),以期能建立起基于產(chǎn)品數(shù)據(jù)管理的計算機(jī)輔助工藝過程規(guī)劃的實(shí)際應(yīng)用系統(tǒng),以期能夠投入到企業(yè)的實(shí)際應(yīng)用中。由于測試環(huán)境與實(shí)際運(yùn)行環(huán)境之間可能存在著差異,所以在實(shí)際運(yùn)行過程中難免存在著不足之處,有待于進(jìn)一步的完善。
3.定義
CAD: 計算機(jī)輔助設(shè)計,全稱為Computer-Aided Design;
CAM: 計算機(jī)輔助制造,全稱為Computer-Aided Manufacturing;
PDM: 產(chǎn)品數(shù)據(jù)管理,全稱為Product Data Management;
CAPP:計算機(jī)輔助工藝規(guī)程設(shè)計,全稱為Computer-Aided Process Planning;
CIMS:計算機(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ī)輔助工藝設(shè)計框架系統(tǒng)2001年2月21號。
(4)《軟件標(biāo)準(zhǔn)和指導(dǎo)性技術(shù)文件》.航空工業(yè)標(biāo)準(zhǔn)HB6465—90。
二測試概要
本次測試主要是對下面的程序進(jìn)行的:
(1) 登陸界面的測試
測試動態(tài)鏈接數(shù)據(jù)庫,輸入服務(wù)器名、服務(wù)器密碼;
測試登陸用戶的合法性,輸入用戶名和密碼;
(2) 系統(tǒng)主界面的測試
測試簡單的WEB瀏覽器能否應(yīng)用;
測試各應(yīng)用模塊能否正常顯示;
(3) 用戶管理界面的測試
測試用戶管理輸入數(shù)據(jù)是否有效;
測試添加、修改、刪除、關(guān)閉按鈕是否有效,是否有異常情況;
(4) 數(shù)據(jù)備份的測試
測試數(shù)據(jù)庫中的內(nèi)容能否以文件形式保存?zhèn)浞荩?
(5) 項目管理模塊的測試
測試該模塊所有界面中的按鈕能否正常實(shí)現(xiàn)功能;
測試是否對所有項目都分配完成后才能進(jìn)入下一流程;
(6) 產(chǎn)品管理模塊的測試
測試產(chǎn)品管理模塊中所有功能是否能夠正常實(shí)現(xiàn);
測試產(chǎn)品管理模塊中的功能是否符合需求;
(7) 工藝文件管理模塊的測試
測試新建工藝、打開工藝、工藝提取、工藝預(yù)覽、工藝打印能否正常實(shí)現(xiàn)功能;
測試該界面中的各個子模塊是否有異常情況;
(8) 工序文件管理模塊的測試(圖略)
測試該模塊中新建工序文件、打開工序文件是否正常實(shí)現(xiàn)功能;
測試該模塊中各個功能是否正常,有無異常情況;
(9) 工藝數(shù)據(jù)管理模塊的測試
測試該模塊中典型工藝數(shù)據(jù)維護(hù)、知識庫管理、切削用量和加工余量能否正常實(shí)現(xiàn)功能;
測試各個子界面中的按鈕等是否能實(shí)現(xiàn)其功能,有無異常情況;
(10) 工藝設(shè)計模塊的測試
測試該模塊中基于實(shí)例的工藝生成和基于模板的實(shí)例生成、工藝路線能否正常實(shí)現(xiàn)其功能;
測試該模塊中各界面的需求功能能否正常實(shí)現(xiàn),有無異常情況要處理;
(11) 系統(tǒng)查詢模塊的測試
測試基于WEB的查詢模塊能否實(shí)現(xiàn)其功能;
測試與后臺數(shù)據(jù)庫鏈接有無異常情況;
三測試結(jié)果及發(fā)現(xiàn)
(1) 測試1
輸入錯誤的數(shù)據(jù)庫服務(wù)器名稱,系統(tǒng)報錯,數(shù)據(jù)庫自動斷開,系統(tǒng)自動關(guān)閉。
輸入正確的數(shù)據(jù)庫服務(wù)器名稱,服務(wù)器密碼錯誤,系統(tǒng)無法進(jìn)入,關(guān)閉后重新登陸。
輸入正確的數(shù)據(jù)庫服務(wù)器名稱和密碼,用戶名出錯時,無法登陸系統(tǒng)。
輸入正確的數(shù)據(jù)庫服務(wù)器名稱和密碼,正確的用戶名,密碼錯誤時無法登陸系統(tǒng)。
通過以上測試得出結(jié)果,只有當(dāng)以上各項都符合時,方能成功登陸本系統(tǒng)。
(2) 測試2
測試主界面能否實(shí)現(xiàn)簡單的WEB瀏覽器功能,在地址欄中輸入所要訪問的主頁地址,測試在相應(yīng)的WebBrower處能否正常顯示網(wǎng)頁內(nèi)容。
測試主菜單中的各個鏈接是否正常,點(diǎn)擊時能否顯示相應(yīng)的界面。
通過反復(fù)的測試,發(fā)現(xiàn)了一些意想不到的問題,尤其時在集成整個系統(tǒng)界面的時候,通過不斷的調(diào)整最終集合成主界面。
(3) 測試3
測試用戶管理界面時,當(dāng)姓名輸入框為空時,無法對登陸用戶進(jìn)行添加、修改、刪除;當(dāng)?shù)顷懹脩魹橄到y(tǒng)管理員時,擁有最高權(quán)限可以對整個用戶管理界面進(jìn)行維護(hù),當(dāng)?shù)顷懹脩魹槠胀ㄓ脩艋蚬に嚾藛T時,無法運(yùn)用用戶管理界面中的添加、修改、刪除按鈕進(jìn)行用戶權(quán)限管理。剛開始時,當(dāng)用戶欄為空時也可以對用戶管理界面進(jìn)行修改。
(4) 測試4
測試數(shù)據(jù)備份界面時,當(dāng)?shù)顷懹脩魹橄到y(tǒng)管理員時可以對基礎(chǔ)資源庫進(jìn)行數(shù)據(jù)備份,以文件形式保存到硬盤中,而當(dāng)普通用戶登陸時則沒有此權(quán)限功能。而在具體實(shí)現(xiàn)此功能時,經(jīng)過反復(fù)調(diào)試后,總算實(shí)現(xiàn)了此功能。
(5) 測試5
測試項目管理模塊時,由于要實(shí)現(xiàn)通用化,所以在建立后臺數(shù)據(jù)庫時要建立關(guān)聯(lián)庫,具體實(shí)現(xiàn)的時候用SQL查詢語言來實(shí)現(xiàn),當(dāng)項目分配完成后要進(jìn)入下一個流程,關(guān)鍵在于要實(shí)現(xiàn)如下需求,只有當(dāng)所有項目都分配完畢后才能進(jìn)入下一個工作流程,這就要逐一讀取數(shù)據(jù)庫中關(guān)于項目分配的信息,來確定是否能夠?qū)崿F(xiàn)。但由于開發(fā)者自身條件的限制,導(dǎo)致后臺數(shù)據(jù)庫中的內(nèi)容不夠充實(shí),只是實(shí)現(xiàn)了一定的設(shè)計思想。
(6) 測試6
測試產(chǎn)品管理模塊時,首先是對產(chǎn)品設(shè)計管理界面的測試,利用樹形結(jié)構(gòu)作導(dǎo)航,利用SQL查詢語言,使左邊的產(chǎn)品或零件與右邊的詳細(xì)信息相對應(yīng),當(dāng)指針指到產(chǎn)品樹中的某一零件時就觸發(fā)事件,在右邊相應(yīng)的位置顯示所查詢到的詳細(xì)信息,如零件的總體信息、工藝信息、其它信息,還可以查看其相應(yīng)的圖形,如果在數(shù)據(jù)庫中未添加零件圖形,則要到產(chǎn)品數(shù)據(jù)管理界面提供的圖形管理處加入與零件相對應(yīng)的圖形,在測試過程中發(fā)現(xiàn)采用樹形結(jié)構(gòu)來導(dǎo)航是非常方便的,不過在維護(hù)過程中對樹形結(jié)構(gòu)管理時,容易產(chǎn)生數(shù)據(jù)庫更新不足,產(chǎn)生一些意外的出錯信息,經(jīng)過反復(fù)測試后,調(diào)整了數(shù)據(jù)庫的結(jié)構(gòu),終于實(shí)現(xiàn)了初步的功能,而工藝信息部分是通過顯示按扭來觸發(fā)事件,當(dāng)零件的工藝已經(jīng)制定好了以后,則通過查詢來檢索后臺數(shù)據(jù)庫零件工藝匯總中的關(guān)于此零件的工藝信息,如果零件的工藝未制定,則進(jìn)入新建工藝界面對零件工藝進(jìn)行編輯,而工藝設(shè)計可以運(yùn)用兩種方法,一種是基于實(shí)例的工藝生成,還有是基于模板的工藝生成,測試過程中主要是測試產(chǎn)品樹中的零件與工藝信息是否能關(guān)聯(lián),以及后臺數(shù)據(jù)庫能否正常工作,經(jīng)過修改后已經(jīng)實(shí)現(xiàn)了初步功能。
(7) 測試7
測試過程中主要是對新建工藝界面、打開工藝、工藝提取、工藝預(yù)覽、工藝打印能否正常實(shí)現(xiàn)功能;測試該界面中的各個子模塊是否有異常情況;在測試過程中主要是要使各個界面都能實(shí)現(xiàn)其初步功能,使之不出現(xiàn)異常情況,開始測試時總出現(xiàn)一些小錯誤,最后在程序中加入了異常處理后在運(yùn)行時就把錯誤給排除拉,
在動態(tài)輸入數(shù)據(jù)時,可以選擇數(shù)據(jù)庫中的內(nèi)容添加到數(shù)據(jù)輸入框中,然后再通過按鈕觸發(fā)事件,保存到后臺數(shù)據(jù)庫中。通過動態(tài)輸入的數(shù)據(jù)與保存到數(shù)據(jù)庫中的內(nèi)容相比較,最后確認(rèn)程序是否能滿足功能要求。
(8) 測試8
主要是測試工序管理模塊中的界面能否達(dá)到功能要求,測試該模塊中新建工序文件、打開工序文件是否正常實(shí)現(xiàn)功能;測試該模塊中各個功能是否正常,有無異常情況;通過在新建工序文件界面中動態(tài)輸入數(shù)據(jù),然后以文件形式保存到電腦中,然后再通過打開工序文件界面把剛才保存的文件打開來,查看數(shù)據(jù)是否與動態(tài)輸入的數(shù)據(jù)一致。如果數(shù)據(jù)不一致則說明程序還存在著問題,需要修改再調(diào)試,如果顯示的數(shù)據(jù)與動態(tài)輸入的數(shù)據(jù)完全一致,說明程序已初步實(shí)現(xiàn)了需求功能,可以對下一面進(jìn)行測試。
(9) 測試9
主要是測試該模塊中典型工藝數(shù)據(jù)維護(hù)、知識庫管理、切削用量和加工余量界面能否正常實(shí)現(xiàn)其功能,最后測試各個子界面中的按鈕等是否能實(shí)現(xiàn)其功能,有無異常情況;在測試過程中,對典型工藝數(shù)據(jù)維護(hù)界面測試主要是動態(tài)輸入數(shù)據(jù),
再點(diǎn)擊相應(yīng)的功能按鈕,查看生成的數(shù)據(jù)是否與動態(tài)輸入的數(shù)據(jù)相一致,如果得出的結(jié)果確實(shí)如此,則說明所編寫的程序是正確的,反之則需要修改,再不斷調(diào)試,直到實(shí)現(xiàn)需求功能為止。
(10) 測試10
主要是測試該模塊中基于實(shí)例的工藝生成和基于模板的工藝生成、工藝路線能否正常實(shí)現(xiàn)其功能;測試該模塊中各界面的需求功能能否正常實(shí)現(xiàn),有無異常情況要處理;根據(jù)上面所示的界面,首先是查詢與零件相對應(yīng)的工藝,然后在網(wǎng)格中顯示出來,再點(diǎn)擊導(dǎo)出工藝按鈕,把檢索到的工藝單存儲到臨時表中,再顯示在網(wǎng)格中,以便使用者進(jìn)行修改,直到達(dá)到要求為止,然后再存儲到零件工藝匯總表中,如果這一過程中輸入與輸出的數(shù)據(jù)相一致,則說明程序已實(shí)現(xiàn)了功能需求,反之,則要進(jìn)行修改,調(diào)試直到達(dá)到要求為止。
(11) 測試11
主要是測試基于WEB的查詢模塊,點(diǎn)擊左邊的查詢按鈕,在右邊對應(yīng)的位置顯示鏈接的內(nèi)容,如果未出現(xiàn)相應(yīng)的界面,則說明源程序還需要修改,調(diào)試,直到能滿足功能需求為止。
四測試結(jié)論
1. 功能1
(1)能力
登陸界面已具備了動態(tài)連接數(shù)據(jù)庫的能力,以及辨別登陸用戶合法性的能力,經(jīng)過多次測試,已證明了登陸界面擁有了以上能力。
(2)限制
在測試過程中,發(fā)現(xiàn)了問題,開始時無法動態(tài)連接遠(yuǎn)程數(shù)據(jù)庫,后來通過改進(jìn),才能夠連接到遠(yuǎn)程數(shù)據(jù)庫。
2. 功能2
(1)能力
系統(tǒng)主界面已具備作為簡單的WEB瀏覽器的能力,能夠訪問INTERNET,另外也達(dá)到了連接各個系統(tǒng)子模塊的能力,經(jīng)過多次測試,證明已具備了以上能力。
(2)限制
由于只是一個簡單的WEB瀏覽器,所以跟IE相比還有一定的差距。
3. 功能3
(1)能力
用戶管理界面已經(jīng)具備了對使用本系統(tǒng)的用戶進(jìn)行管理的能力,當(dāng)?shù)顷懹脩魹橄到y(tǒng)管理員時可以對任何用戶進(jìn)行修改其所有信息,也可以添加和刪除用戶;而當(dāng)?shù)顷懹脩魹槠胀ㄓ脩魰r,則沒有權(quán)限修改用戶信息的能力。
4. 功能4
(1)能力
數(shù)據(jù)備份界面已經(jīng)具備了對基礎(chǔ)庫以文件形式保存的能力,經(jīng)過多次測試后,已經(jīng)能夠?qū)崿F(xiàn)功能需求,能夠保存數(shù)據(jù),并能夠在系統(tǒng)中顯示以文件形式保存的數(shù)據(jù)。
(2)限制
由于數(shù)據(jù)本身已保存在數(shù)據(jù)庫中,以文件形式再保存、備份只是為了防止意外事故發(fā)生,導(dǎo)致數(shù)據(jù)丟失,欠缺是為能所有用到的數(shù)據(jù)庫進(jìn)行備份。
5. 功能5
(1)能力
項目管理模塊主要是對通用化的項目進(jìn)行分配任務(wù)、編制任務(wù),經(jīng)過這一流程后,最后審核項目。經(jīng)過測試,證明該模塊已具備了此能力。
(2)限制
由于對項目內(nèi)容及流程知道有限,導(dǎo)致建立的數(shù)據(jù)庫內(nèi)容教少,還不具備通用性,有待于改進(jìn)、提高。
6.功能6
(1) 能力
產(chǎn)品管理模塊主要是用來對企業(yè)中的產(chǎn)品自制件、標(biāo)準(zhǔn)件、外協(xié)件等進(jìn)行分類管理,對自制件如果未制定工藝則到相應(yīng)的新建工藝界面制定工藝,如果已經(jīng)制定則能夠顯示其工藝內(nèi)容。經(jīng)過多次測試,證明該模塊已經(jīng)具備了以上能力。
(2) 限制
由于設(shè)計人員水平的限制,采用樹形結(jié)構(gòu)導(dǎo)航時,沒做到把樹結(jié)構(gòu)做到無窮級數(shù)展開,有待于進(jìn)一步提高。
7.功能7
(1) 能力
工藝文件管理模塊主要具有工藝、打開工藝、工藝提取、工藝預(yù)覽、工藝打印的能力,經(jīng)過多次測試后,證明該模塊已經(jīng)具備了以上能力。
8. 功能8
(1) 能力
工序文件管理模塊已經(jīng)具備了新建工序卡片和顯示已經(jīng)保存的工序卡片的能力,經(jīng)反復(fù)測試后,證明該模塊已經(jīng)具備了以上能力。
9. 功能9
(1) 能力
工藝數(shù)據(jù)管理模塊主要是對典型工藝數(shù)據(jù)維護(hù)、知識庫管理、切削用量和加工余量庫查詢。經(jīng)過多次測試后,證明該模塊已經(jīng)具備了以上能力。
10.功能10
(1) 能力
工藝設(shè)計管理模塊主要是實(shí)現(xiàn)基于實(shí)例的工藝生成和基于模板的實(shí)例生成、工藝路線的查詢的能力。
(2)由于開發(fā)設(shè)計時間和自身水平的限制,還未能實(shí)現(xiàn)基于特征的工藝生成的能力,有待于進(jìn)一步提高。
11.功能11
(1) 能力
系統(tǒng)查詢模塊主要是用來查詢基礎(chǔ)資源庫中的信息,經(jīng)過測試后已具備了此能力。
(2) 限制
由于開發(fā)者本身對ACTIVEFORM以及網(wǎng)絡(luò)發(fā)布了解不夠,還未能把用Delphi制作的網(wǎng)頁發(fā)布到服務(wù)器上,以達(dá)到基于WEB的查詢能力。
五評價
1. 能力
經(jīng)測試已證實(shí)了本軟件的能力。
2. 缺陷與限制
經(jīng)測試證實(shí)的軟件缺陷和限制已經(jīng)在測試結(jié)果和發(fā)現(xiàn)中交代過,綜合以上的缺陷和限制,對本軟件存在著一定程度的影響。
六測試總結(jié)
通過此次測試,基于PDM的CAPP系統(tǒng)得到了很大的改進(jìn),但要消耗了測試人員很大的時間,設(shè)計人員更是消耗了大量的機(jī)時才使系統(tǒng)性能有了一定的提高,不過通過測試后,對于軟件本身來說是必不可少的工作,有利于系統(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;
//下面一部分是動態(tài)連接數(shù)據(jù)庫
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 工序名稱庫') ;
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ī)械加工工藝過程卡片') ;
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ī)床庫') ;
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 夾具庫') ;
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 刀具庫') ;
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 量具庫') ;
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ī)械加工工藝過程卡片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ī)床型號').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('請將指針上移,謝謝');
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)品型號']:=edit7.Text;
adoquery2['零件圖號']:=edit5.Text;
adoquery2['零件名稱']:=edit8.Text;
adoquery2['編制日期']:=edit1.Text;
adoquery2['校對日期']:=edit2.Text;
adoquery2['審核日期']:=edit3.Text;
adoquery2['材料牌號']:=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)品型號']:=adoquery2['產(chǎn)品型號'];
adoquery10['零件圖號']:=adoquery2['零件圖號'];
adoquery10['編制日期']:=adoquery2['編制日期'];
adoquery10['校對日期']:=adoquery2['校對日期'];
adoquery10['審核日期']:=adoquery2['審核日期'];
adoquery10['材料牌號']:=adoquery2['材料牌號'];
adoquery10['毛坯種類']:=adoquery2['毛坯種類'];
adoquery10['圖形']:=adoquery2['圖形'];
adoquery10['工序號']:=adoquery2['工序號'];
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('單件工時').AsString:=adoquery2.fieldbyname('單件工時').AsString;
adoquery10.Post;
adoquery2.Next;
end;
until adoquery2.Eof;
showmessage('提交成功!');
speedbutton1.Enabled:=false;
end;
end else showmessage('請輸入產(chǎn)品和零件名稱!');
end;
procedure Tl_xjgy.SpeedButton2Click(Sender: TObject);
var
filename:string;
begin
adoq