c++課程設計--測控系統(tǒng)應用軟件實訓——產(chǎn)品質(zhì)量監(jiān)測系統(tǒng)設計_第1頁
已閱讀1頁,還剩27頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、<p><b>  課程設計任務書</b></p><p>  題 目: 測控系統(tǒng)應用軟件實訓——產(chǎn)品質(zhì)量監(jiān)測系統(tǒng)設計 </p><p><b>  初始條件:</b></p><p>  日光燈試驗臺是用來檢測點亮日光燈的整流器或逆變器是否合格

2、的裝置,通過多次測量燈管兩端的電壓和電流,再通過分析,來驗證整流器或逆變器工作是否正常。單個整流器或逆變器有不同功率之分,也有可以同時點亮日光燈個數(shù)多少之分。檢測一個整流器或逆變器,下位機大概會產(chǎn)生30組左右的電壓和電流數(shù)據(jù)。</p><p>  本實訓的目標是設計一個產(chǎn)品質(zhì)量監(jiān)測系統(tǒng),保存日光燈試驗臺下位機產(chǎn)生的數(shù)據(jù)信息,并時行產(chǎn)品合格檢查、產(chǎn)品質(zhì)量查詢、分類統(tǒng)計和報表打印操作,以期使產(chǎn)品的質(zhì)量管理工作系統(tǒng)化、

3、規(guī)范化、自動化,從而提高生產(chǎn)效率。</p><p><b>  設計功能要求:</b></p><p>  1、儀器檢測結果的輸入,包括記錄號、檢修日期、儀器編號、儀器類型、儀器功率、儀器點亮日光燈個數(shù)、檢測人員、檢測記錄。除檢測人員和檢測記錄由工作人員在計算機上直接輸入外,其他項都通過串口讀入。</p><p>  2、儀器檢測數(shù)據(jù)的輸入,包

4、括記錄號、儀器編號、檢測電壓、檢測電流。一條儀器檢測結果對應多條檢測數(shù)據(jù)。</p><p>  3、儀器檢測數(shù)據(jù)以圖形方式顯示變化趨勢。</p><p>  4、儀器檢測信息的查詢、修改和刪除。</p><p>  5、儀器類型和功率代碼管理。</p><p>  6、儀器檢測信息的報表和打印處理。(選做)</p><p&

5、gt;  7、密碼和權限管理,不同權限用戶具有不同的操作權力。(選做)</p><p><b>  系統(tǒng)功能模塊設計:</b></p><p>  對上述各項功能進行集中分塊,按結構化程序設計的要求,得到如圖1所示的系統(tǒng)功能模塊圖。</p><p>  要求完成的主要任務: (包括課程設計工作量及其技術要求,以及說明書撰寫等具體要求)</

6、p><p>  1.合理進行數(shù)據(jù)庫設計,數(shù)據(jù)項和數(shù)據(jù)結構包括以下部分: </p><p>  1)儀器檢測結果信息表,保存檢測結果記錄,包括:記錄號、檢測日期、儀器編號、儀器類型、儀器功率、儀器額定點亮日光燈個數(shù)、儀器溫升、檢測時間間隔、檢測人員、檢測記錄。</p><p>  2)儀器檢測數(shù)據(jù)信息表,保存檢測數(shù)據(jù)記錄,包括:記錄號、儀器編號、檢測電壓、檢測電流。<

7、;/p><p>  3)儀器類型信息表:記錄號、儀器類型。</p><p>  4)儀器功率信息表:記錄號、儀器功率。</p><p>  5)記錄號計數(shù)數(shù)據(jù)表,用于保存其他表格所需的記錄號,包括:記錄號名稱、記錄號計數(shù)值。</p><p>  6) 用戶信息表:工號、用戶名、密碼、權限。(選用)</p><p>  圖1

8、 系統(tǒng)功能模塊圖</p><p>  2.進行相應的功能模塊設計,包括:</p><p>  1)串口通信設計;(學習)</p><p><b>  2)數(shù)據(jù)模塊設計;</b></p><p>  3)系統(tǒng)主窗體設計;</p><p>  4)檢測數(shù)據(jù)分析設計;</p><p&

9、gt;  5)檢測結果查詢設計;</p><p>  6)報表打印設計;(選做)</p><p>  7) 安全管理設計。(選做)</p><p>  3.設計并繪制各個模塊與函數(shù)的軟件流程圖,流程圖要模塊化并具有可讀性(根據(jù)流程圖知道程序功能實現(xiàn)過程);編制模塊化源程序; </p><p>  4.編寫并調(diào)試完整的程序代碼 (所有自定義的

10、單元文件名、控件名、函數(shù)名、變量名不能與示例程序同名); </p><p>  5. 按學校課程設計說明書撰寫規(guī)范提交一份課程設計說明書(6000字左右),設計說明書應詳細說明設計思路、工作流程和軟件設計與實現(xiàn)界面。</p><p><b>  時間安排:</b></p><p>  指導教師簽名:

11、年 月 日</p><p>  系主任(或責任教師)簽名: 年 月 日</p><p><b>  目錄</b></p><p>  緒論 4</p><p>  整體模塊設計

12、 4 </p><p>  代碼管理模塊 5</p><p>  3.1類型代碼管理 5</p><p>  3.2功率代碼管理

13、 5</p><p>  檢測模塊 6</p><p>  4.1開始檢測 6</p><p>  4.2停止檢測

14、 8</p><p>  5.查詢模塊 9</p><p>  5.1結果查詢 9 </p><p>  5.2工位查詢

15、 19</p><p>  6.數(shù)據(jù)表瀏覽模塊 20</p><p>  7.數(shù)據(jù)修改模塊 22</p><p>  8.打印報表模塊

16、 24</p><p>  9.幫助模塊 25</p><p>  10.總結與體會 27</p><p>  11.參考文獻

17、 28</p><p><b>  1.緒論</b></p><p>  自工業(yè)革命以來,人類已經(jīng)越來越意識到機器性工作的可代替性是多么的重要。也正是由于這一點,自動化制造業(yè)得到了飛速的發(fā)展,到如今已經(jīng)達到一個非常成熟的形態(tài)。而作為當代一名當代的中國大學生,尤其是像我們這樣的與制造業(yè)有關的工科專業(yè)學生,在這樣的時代大潮中自然不能落于人

18、后。在自身專業(yè)知識學習過程中要全力以赴,抓住任何機會充實自己。</p><p>  而恰好學校安排了測控系統(tǒng)軟件設計這一課程讓我們學習和鍛煉,更要珍惜這樣的機會。主題是制作一個質(zhì)量檢測軟件,利用日光燈試驗臺來檢測點亮日光燈的整流器或逆變器是否合格,并且通過多次測量燈管兩端的電壓和電流,再通過分析,來驗證整流器或逆變器工作是否正常。單個整流器或逆變器有不同功率之分,也有可以同時點亮日光燈個數(shù)多少之分。檢測一個整流器

19、或逆變器,下位機大概會產(chǎn)生30組左右的電壓和電流數(shù)據(jù)。</p><p>  總結之,本實訓的目標是設計一個產(chǎn)品質(zhì)量監(jiān)測系統(tǒng),保存日光燈試驗臺下位機產(chǎn)生的數(shù)據(jù)信息,并時行產(chǎn)品合格檢查、產(chǎn)品質(zhì)量查詢、分類統(tǒng)計和報表打印操作,以期使產(chǎn)品的質(zhì)量管理工作系統(tǒng)化、規(guī)范化、自動化,從而體現(xiàn)自動化制造業(yè)帶來的高效率和收益。</p><p><b>  2.整體模塊設計</b><

20、/p><p>  圖1 程序總體設計結構圖</p><p><b>  3. 代碼管理模塊</b></p><p><b>  3.1類型代碼管理</b></p><p><b>  (1)程序代碼</b></p><p>  void __fastcall

21、 TF_Main::M_TypeClick(TObject *Sender)</p><p><b>  {</b></p><p><b>  //類型代碼編輯</b></p><p>  F_Assist->ADOT_Count->First();//設定記錄號計數(shù)數(shù)據(jù)表當前活動記錄是第一條記錄</p

22、><p>  F_Assist->ADOT_Count->MoveBy(2);//下移兩條記錄至計數(shù)表中的儀器類型</p><p>  F_Assist->DBLookupListBox1->ListField="";//先賦空值以免系統(tǒng)拋出異常</p><p>  F_Assist->DBLookupListBox1-

23、>KeyField="";//先賦空值以免系統(tǒng)拋出異常</p><p>  F_Assist->DBLookupListBox1->ListSource=DataModule1->DS_Type;//賦儀器類型表</p><p>  F_Assist->DBLookupListBox1->KeyField="Type_ID&

24、quot;;//賦類型記錄號字段</p><p>  F_Assist->DBLookupListBox1->ListField="Type_Name";//賦類型名稱字段</p><p>  F_Assist->Label2->Caption="儀器類型代碼表";</p><p>  F_Assist

25、->ShowModal(); //打開輔助資料窗體</p><p><b>  } </b></p><p><b>  (2)運行結果</b></p><p>  圖2 儀器類型代碼界面</p><p><b>  3.2功率代碼管理</b></p>

26、<p><b>  (1)程序代碼</b></p><p>  void __fastcall Ttcw::M_PowerClick(TObject *Sender)</p><p><b>  { x=2;</b></p><p>  F_Assist->ADOT_Count->TableNam

27、e="Industry_Power";//功率代碼編輯</p><p>  F_Assist->ADOT_Count->Open();</p><p>  F_Assist->ADOT_Count->Edit();</p><p>  DataModule1->AT_Power->Open();</p&g

28、t;<p>  DataModule1->AT_Power->Edit();</p><p>  F_Assist->ADOT_Count->First();//設定記錄號計數(shù)數(shù)據(jù)表當前活動記錄是第一條記錄</p><p>  F_Assist->ADOT_Count->MoveBy(2);//下移兩條記錄至計數(shù)表中的儀器功率</p&

29、gt;<p>  F_Assist->DBLookupListBox1->ListField="";//先賦空值以免系統(tǒng)拋出異常</p><p>  F_Assist->DBLookupListBox1->KeyField="";//先賦空值以免系統(tǒng)拋出異常</p><p>  F_Assist->DBLo

30、okupListBox1->ListSource=DataModule1->DS_Power;//賦儀器功率代碼表</p><p>  F_Assist->DBLookupListBox1->KeyField="Power_ID";//賦功率記錄號字段</p><p>  F_Assist->DBLookupListBox1->Lis

31、tField="Power_Name";//賦功率名稱字段</p><p>  F_Assist->Label2->Caption="儀器功率代碼表";</p><p>  F_Assist->Show(); //打開輔助資料窗體</p><p><b>  }</b></p>

32、;<p><b>  (2)運行結果</b></p><p>  圖3 儀器功率代碼界面</p><p><b>  4.檢測模塊</b></p><p><b>  4.1開始檢測</b></p><p><b>  (1)流程圖</b>&

33、lt;/p><p><b>  圖4 流程圖</b></p><p><b>  (2)程序代碼</b></p><p>  void __fastcall Ttcw:M_StartClick(TObject *Sender)</p><p><b>  {</b></p&g

34、t;<p>  //打開串口,開啟JudgeTimer定時器定時測控串口</p><p>  MainMenu->Items->Items[2]->Enabled=false;//使開始檢測菜單項非能</p><p>  MainMenu->Items->Items[3]->Enabled=True;//停止檢測菜單項使能</p>

35、;<p>  if(Com1->PortOpen==True)//如果串口已打開,則關閉之</p><p>  Com1->PortOpen=false;</p><p>  Com1->PortOpen=True; //打開串口</p><p>  Com1->InBufferCount=0;//消除輸入緩沖區(qū)的內(nèi)容</

36、p><p>  Com1->OutBufferCount=0;//消除輸出緩沖區(qū)的內(nèi)容</p><p>  if(!Com1->PortOpen) //判斷串口初始化是否失敗并顯示</p><p>  ShowMessage("串口初始化失敗");</p><p>  JudgeTimer->Enab

37、led=true; //開啟串口監(jiān)聽定時器</p><p>  RE_Mess->Lines->Add("串口初始化成功,正在監(jiān)聽");//在RichEdit控件顯示串口狀態(tài)</p><p>  RE_Mess->Lines->Add("用戶可以開始檢測數(shù)據(jù)");</p><p><b>  

38、}</b></p><p><b>  (3)運行結果</b></p><p>  圖5 開始檢測后界面</p><p><b>  4.2停止檢測</b></p><p><b>  (1)程序代碼</b></p><p>  void _

39、_fastcall Ttcw::M_PauseClick(TObject *Sender)</p><p><b>  {</b></p><p>  //關閉串口,關閉JudgeTimer定時器定時測控串口</p><p>  MainMenu->Items->Items[2]->Enabled=True;//開始檢測菜單項

40、使能</p><p>  MainMenu->Items->Items[3]->Enabled=false;//停止檢測菜單項非能</p><p>  JudgeTimer->Enabled=false; //關閉串口監(jiān)聽定時器</p><p>  Com1->PortOpen=false; //關閉串口</p><

41、p>  RE_Mess->Lines->Add("串口已關閉,與下位機通信中斷");//在RichEdit控件顯示串口狀態(tài)</p><p><b>  }</b></p><p><b>  (2)運行結果</b></p><p>  圖6 停止檢測后界面</p>&l

42、t;p><b>  5.查詢模塊</b></p><p><b>  5.1結果查詢</b></p><p> ?。?)程序代碼以及對應程序結果</p><p>  #include <vcl.h></p><p>  #pragma hdrstop</p><

43、p>  #include "Query.h"</p><p>  #include "DM.h"</p><p>  //---------------------------------------------------------------------------</p><p>  #pragma packag

44、e(smart_init)</p><p>  #pragma resource "*.dfm"</p><p>  TF_Query *F_Query;</p><p>  //---------------------------------------------------------------------------</p>

45、;<p>  __fastcall TF_Query::TF_Query(TComponent* Owner)</p><p>  : TForm(Owner)</p><p><b>  {</b></p><p><b>  }</b></p><p>  //----------

46、-----------------------------------------------------------------</p><p>  void __fastcall TF_Query::CB_TimeClick(TObject *Sender)</p><p>  { //判斷時間查詢復選框是否選中,以決定各單選按鈕是否能使用</p><p>  

47、if(CB_Time->Checked)</p><p>  { //若時間框選中,則各單選按鈕被激活</p><p>  RadioButton1->Enabled= true ; //</p><p>  RadioButton2->Enabled= true ; //</p><p>  RadioButton3-

48、>Enabled= true ; //</p><p><b>  }</b></p><p><b>  else</b></p><p>  {//否則,各單選按鈕處于失效狀態(tài)</p><p>  RadioButton1->Enabled= false ; //</p&g

49、t;<p>  RadioButton2->Enabled= false ; //</p><p>  RadioButton3->Enabled= false; //</p><p><b>  }</b></p><p><b>  }</b></p><p>  /

50、/---------------------------------------------------------------------------</p><p>  void __fastcall TF_Query::CB_CodeClick(TObject *Sender)</p><p>  {//判斷編號查詢復選框是否被選中</p><p>  if(

51、CB_Code->Checked)</p><p><b>  {</b></p><p>  M_Code->Enabled=true ;//memo控件被激活 </p><p>  Label2->Enabled=true;//標簽控件被激活</p><p><b>  }</b&g

52、t;</p><p><b>  else</b></p><p>  { //memo與標簽控件失效</p><p>  M_Code->Enabled=false;</p><p>  Label2->Enabled=false;</p><p><b>  }<

53、/b></p><p><b>  }</b></p><p>  //---------------------------------------------------------------------------</p><p>  圖7 時間設定查詢界面</p><p>  圖8時間設定查詢結果<

54、/p><p>  //---------------------------------------------------------------------------</p><p>  void __fastcall TF_Query::CB_TypeClick(TObject *Sender)</p><p>  { //判斷類型查詢是否選中</p>

55、;<p>  if(CB_Type->Checked)</p><p>  E_Type->Enabled=true;</p><p><b>  else</b></p><p>  E_Type->Enabled=false;</p><p><b>  }</b>

56、;</p><p><b>  圖9按類型查詢界面</b></p><p><b>  圖10類型查詢結果</b></p><p>  void __fastcall TF_Query::CB_PowerClick(TObject *Sender)</p><p><b>  {</

57、b></p><p>  //判斷功率查詢是否選中</p><p>  if(CB_Power->Checked)</p><p>  E_Power->Enabled=true;</p><p><b>  else</b></p><p>  E_Power->Enab

58、led=false;</p><p>  }//---------------------------------------------------------------------------</p><p>  圖11按功率查詢界面</p><p><b>  圖12功率查詢結果</b></p><p>  vo

59、id __fastcall TF_Query::CB_NumClick(TObject *Sender)</p><p><b>  {</b></p><p>  //判斷管數(shù)查詢是否選中</p><p>  if(CB_Num->Checked)</p><p><b>  {</b>&l

60、t;/p><p>  E_Num->Enabled=true;</p><p>  UpDown->Enabled=true;</p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b&

61、gt;</p><p>  E_Num->Enabled=false;</p><p>  UpDown->Enabled=false;</p><p><b>  }}</b></p><p>  圖13 按管數(shù)查詢界面</p><p>  圖14 按管數(shù)查詢結果</p>

62、<p>  void __fastcall TF_Query::B_CancelClick(TObject *Sender)</p><p><b>  {</b></p><p>  DataModule1->AQ_Record->Close();//關閉檢測記錄數(shù)據(jù)源</p><p>  DataModule1-&

63、gt;AQ_Record->SQL->Clear();//清除SQL語句</p><p>  DataModule1->AQ_Record->SQL->Add("SELECT * FROM Industry_Record");</p><p>  DataModule1->AQ_Data->Close();//關閉檢測數(shù)據(jù)數(shù)據(jù)源

64、</p><p>  DataModule1->AQ_Data->SQL->Clear();//清除SQL語句</p><p>  DataModule1->AQ_Data->SQL->Add("SELECT * FROM Industry_Record,Industry_Data");</p><p>  D

65、ataModule1->AQ_Record->Open();//執(zhí)行SQL語句,打開檢測記錄表</p><p>  DataModule1->AQ_Data->Open();//執(zhí)行SQL語句,打開檢測數(shù)據(jù)表</p><p>  F_Query->Close();//關閉檢測數(shù)據(jù)查看窗口</p><p><b>  }<

66、/b></p><p>  //---------------------------------------------------------------------------</p><p>  void __fastcall TF_Query::B_QueryClick(TObject *Sender)</p><p>  {//查詢按鈕單擊事件&l

67、t;/p><p>  if(!CB_Time->Checked&&!CB_Type->Checked&&!CB_Power->Checked</p><p>  &&!CB_Num->Checked&&!CB_Code->Checked) //若沒有查詢條件</p><p>&

68、lt;b>  {</b></p><p>  Application->MessageBoxA("沒有查詢條件,請選擇或輸入","查詢出錯",MB_OKCANCEL);</p><p><b>  return;</b></p><p><b>  }</b>

69、</p><p>  String str1="Industry_Record.Record_Type='" + E_Type->Text + "'",</p><p>  str2="Record_Type='" + E_Type->Text + "'",</

70、p><p>  str3="Industry_Record.Record_Power='" + E_Power->Text + "'",</p><p>  str4="Record_Power='" + E_Power->Text + "'";</p>&

71、lt;p>  DataModule1->AQ_Record->Close();//關閉檢測記錄數(shù)據(jù)源</p><p>  DataModule1->AQ_Record->SQL->Clear();//清除SQL語句</p><p>  DataModule1->AQ_Record->SQL->Add("SELECT * FRO

72、M Industry_Record WHERE ");</p><p>  //增加一條SQL語句,從檢測記錄表中提取數(shù)據(jù)記錄</p><p>  DataModule1->AQ_Data->Close();//關閉檢測數(shù)據(jù)數(shù)據(jù)源</p><p>  DataModule1->AQ_Data->SQL->Clear();//清

73、除SQL語句</p><p>  DataModule1->AQ_Data->SQL->Add("SELECT * FROM Industry_Record,Industry_Data WHERE Industry_Record.Record_SNumber=Industry_Data.Data_SNumber AND ");</p><p>  //

74、增加一條SQL語句,從檢測記錄表、檢測數(shù)據(jù)表中提取數(shù)據(jù)記錄</p><p><b>  //時間查詢</b></p><p>  if(CB_Time->Checked)</p><p><b>  {</b></p><p>  DataModule1->AQ_Record->S

75、QL->Add(" Record_Date BETWEEN :timel1 AND :timel2");</p><p>  DataModule1->AQ_Data->SQL->Add(" Record_Date BETWEEN :timer1 AND :timer2");</p><p>  //timel1、2,time

76、r1、2是在SQL語句中自定義的變量</p><p>  if(RadioButton1->Checked) //當天查詢</p><p><b>  {</b></p><p>  DataModule1->AQ_Record->Parameters->ParamByName("timel1")-

77、>Value=</p><p>  StrToDateTime(DateToStr(Now())+" 00:00:00");</p><p>  DataModule1->AQ_Record->Parameters->ParamByName("timel2")->Value=</p><p>  

78、StrToDateTime(DateToStr(Now())+" 23:59:59");</p><p>  DataModule1->AQ_Data->Parameters->ParamByName("timer1")->Value=</p><p>  StrToDateTime(DateToStr(Now())+&quo

79、t; 00:00:00");</p><p>  DataModule1->AQ_Data->Parameters->ParamByName("timer2")->Value=</p><p>  StrToDateTime(DateToStr(Now())+" 23:59:59");</p><

80、p><b>  }</b></p><p>  if(RadioButton2->Checked) //本周查詢</p><p><b>  {</b></p><p>  TDateTime *DT=new TDateTime();</p><p>  *DT=Now();</

81、p><p>  int convert[]={0,6,0,1,2,3,4,5};//國內(nèi)外一周的起止不一樣</p><p>  TDateTime Monday=DT->operator-(convert[DT->DayOfWeek()]);</p><p>  //DayofWeek()取得今天是一周內(nèi)的第幾天,再進行當前星期一的日期推算</p>

82、;<p>  DataModule1->AQ_Record->Parameters->ParamByName("timel1")->Value=</p><p>  StrToDateTime(DateToStr(Monday)+" 00:00:00");</p><p>  DataModule1->AQ

83、_Record->Parameters->ParamByName("timel2")->Value=</p><p>  StrToDateTime(DateToStr(Now())+" 23:59:59");</p><p>  DataModule1->AQ_Data->Parameters->ParamByN

84、ame("timer1")->Value=</p><p>  StrToDateTime(DateToStr(Monday)+" 00:00:00");</p><p>  DataModule1->AQ_Data->Parameters->ParamByName("timer2")->Value=

85、</p><p>  StrToDateTime(DateToStr(Now())+" 23:59:59");</p><p><b>  }</b></p><p>  if(RadioButton3->Checked) //本月查詢</p><p><b>  {</b&g

86、t;</p><p>  unsigned short i,j,k;</p><p>  Now().DecodeDate(&i,&j,&k);//提取當前的年月日,分別存入變量i,j,k</p><p>  DataModule1->AQ_Record->Parameters->ParamByName("time

87、l1")->Value=</p><p>  StrToDateTime(IntToStr(i)+'-'+IntToStr(j)+"-01 00:00:00");</p><p>  DataModule1->AQ_Record->Parameters->ParamByName("timel2")-&

88、gt;Value=</p><p>  StrToDateTime(DateToStr(Now())+" 23:59:59");</p><p>  DataModule1->AQ_Data->Parameters->ParamByName("timer1")->Value=</p><p>  Str

89、ToDateTime(IntToStr(i)+'-'+IntToStr(j)+"-01 00:00:00");</p><p>  DataModule1->AQ_Data->Parameters->ParamByName("timer2")->Value=</p><p>  StrToDateTime(Da

90、teToStr(Now())+" 23:59:59");</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  //類型查詢</b></p><p>  if(CB_Type->Checked)&l

91、t;/p><p>  { if(CB_Time->Checked)</p><p>  {//如果前面已經(jīng)添加了時間查詢,則需要加AND條件同時成立運算符</p><p>  DataModule1->AQ_Record->SQL->Add(" AND ");</p><p>  DataModule1

92、->AQ_Data->SQL->Add(" AND ");</p><p><b>  }</b></p><p>  DataModule1->AQ_Record->SQL->Add(str1);</p><p>  DataModule1->AQ_Data->SQL->

93、;Add(str2);</p><p><b>  }</b></p><p><b>  //功率查詢</b></p><p>  if(CB_Power->Checked)</p><p>  { if(CB_Time->Checked||CB_Type->Checked)&l

94、t;/p><p>  {//如果前面已經(jīng)添加了時間查詢或類型查詢,則需要加AND條件同時成立運算符</p><p>  DataModule1->AQ_Record->SQL->Add(" AND ");</p><p>  DataModule1->AQ_Data->SQL->Add(" AND &qu

95、ot;);</p><p><b>  }</b></p><p>  DataModule1->AQ_Record->SQL->Add(str3);</p><p>  DataModule1->AQ_Data->SQL->Add(str4);</p><p><b>  

96、}</b></p><p><b>  //編號查詢</b></p><p>  if(CB_Code->Checked)</p><p><b>  {</b></p><p>  if(M_Code->Text.IsEmpty())</p><p>

97、;<b>  { //如果無編號</b></p><p>  Application->MessageBoxA("請輸入編號","查詢出錯",MB_OK);</p><p>  M_Code->SetFocus();//焦點至編號輸入框</p><p><b>  return;&l

98、t;/b></p><p><b>  }</b></p><p>  if(CB_Time->Checked||CB_Type->Checked||CB_Power->Checked)</p><p><b>  {</b></p><p>  //如果前面已經(jīng)添加了其他查

99、詢,則需要加AND條件同時成立運算符</p><p>  DataModule1->AQ_Record->SQL->Add(" AND ");</p><p>  DataModule1->AQ_Data->SQL->Add(" AND ");</p><p><b>  }<

100、;/b></p><p>  DataModule1->AQ_Record->SQL->Add("(");</p><p>  DataModule1->AQ_Data->SQL->Add("("); //可能包含多個編號,需用括號括起來</p><p>  for(int i=0;i

101、<M_Code->Lines->Count;i++)</p><p><b>  {</b></p><p>  if(M_Code->Lines->Strings[i].IsEmpty())continue;</p><p>  DataModule1->AQ_Record->SQL->Add(

102、Format("Record_SNumber='%s%s%s'",</p><p>  ARRAYOFCONST(("",M_Code->Lines->Strings[i],""))));</p><p>  //利用format函數(shù)進行參數(shù)賦值</p><p>  DataMo

103、dule1->AQ_Data->SQL->Add(Format("Data_SNumber='%s%s%s'",</p><p>  ARRAYOFCONST(("",M_Code->Lines->Strings[i],""))));</p><p>  //利用format函數(shù)進行參

104、數(shù)賦值</p><p>  if(i!=M_Code->Lines->Count-1)</p><p><b>  {</b></p><p>  DataModule1->AQ_Record->SQL->Add(" OR ");</p><p>  DataModule

105、1->AQ_Data->SQL->Add(" OR ");</p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p>  DataModule1->A

106、Q_Record->SQL->Add(" )");</p><p>  DataModule1->AQ_Data->SQL->Add(" ) ");</p><p><b>  }</b></p><p><b>  }</b></p>&

107、lt;p><b>  }</b></p><p>  圖15多編號查詢界面</p><p>  圖16 多編號查詢結果</p><p><b>  //管數(shù)查詢</b></p><p>  if(CB_Num->Checked)</p><p><b>

108、  {</b></p><p>  if(CB_Time->Checked||CB_Type->Checked||CB_Power->Checked||CB_Code->Checked)</p><p><b>  {</b></p><p>  //如果前面已經(jīng)添加了其他查詢,則需要加AND條件同時成立運算

109、符</p><p>  DataModule1->AQ_Record->SQL->Add(" AND ");</p><p>  DataModule1->AQ_Data->SQL->Add(" AND ");</p><p><b>  }</b></p>

110、<p>  DataModule1->AQ_Record->SQL->Add(" Record_LNumber=:lightl1");</p><p>  DataModule1->AQ_Record->Parameters->ParamByName("lightl1")->Value=E_Num->Text;&

111、lt;/p><p>  DataModule1->AQ_Data->SQL->Add(" Record_LNumber=:lightr1");</p><p>  DataModule1->AQ_Data->Parameters->ParamByName("lightr1")->Value=E_Num->T

112、ext;</p><p><b>  }</b></p><p>  DataModule1->AQ_Record->Open();//執(zhí)行SQL語句,打開檢測記錄表</p><p>  DataModule1->AQ_Data->Open();//執(zhí)行SQL語句,打開檢測數(shù)據(jù)表</p><p>

113、  Close();//關閉查詢窗口</p><p>  DataModule1->AQ_RecordRecord_Date->DisplayFormat="yyyy-mm-dd";</p><p>  //定義檢測記錄表中檢測日期顯示格式</p><p>  ((TDateTimeField *)(DataModule1->A

114、Q_Data->FieldByName("Record_Date")))->DisplayFormat="yyyy-mm-dd";</p><p>  //定義檢測數(shù)據(jù)表中檢測日期顯示格式</p><p><b>  }</b></p><p>  運行結果分析:經(jīng)過實際操作發(fā)現(xiàn)各個功能均正常

115、,并且各函數(shù)對應的功能劃分比較清晰。</p><p><b>  5.2工位查詢</b></p><p><b>  (1)程序代碼</b></p><p>  void __fastcall TF_Main::M_LabNumberClick(TObject *Sender)</p><p>  

116、{ //對指定工位的檢測裝置進行數(shù)據(jù)獲取</p><p>  F_LabNo->ShowModal();//打開工位號輸入窗口?</p><p>  if(F_LabNo->ModalResult==mrOk)</p><p>  { //如果窗體操作結果是用戶確定按鈕</p><p>  //通過串口發(fā)送用戶所要獲取的指定工位的

117、請求數(shù)據(jù)</p><p>  char buff[4];</p><p>  buff[0]=0x02;</p><p>  buff[1]=0x70+F_LabNo->E_Num->Text.ToInt();</p><p>  buff[2]=0x03;</p><p>  buff[3]=0x31;&

118、lt;/p><p>  SendData(StrPas(buff));</p><p><b>  //在狀態(tài)欄顯示</b></p><p>  RE_Mess->Lines->Add(F_LabNo->E_Num->Text+"號工位查詢請求已發(fā)送");</p><p><

119、b>  }</b></p><p><b>  }</b></p><p><b>  (2)運行結果</b></p><p>  圖17 程序工位查詢界面</p><p>  圖18 工位號查詢結果</p><p><b>  6.數(shù)據(jù)表瀏覽模塊

120、</b></p><p><b>  (1)程序代碼</b></p><p>  #include <vcl.h></p><p>  #pragma hdrstop</p><p>  #include "Data.h"</p><p>  #incl

121、ude "DM.h"</p><p>  #include "Print.h"</p><p>  //---------------------------------------------------------------------------</p><p>  #pragma package(smart_init

122、)</p><p>  #pragma resource "*.dfm"</p><p>  TF_Data *F_Data;</p><p>  //---------------------------------------------------------------------------</p><p>  

123、__fastcall TF_Data::TF_Data(TComponent* Owner)</p><p>  : TForm(Owner)</p><p><b>  {</b></p><p><b>  }</b></p><p>  //--------------------------

124、-------------------------------------------------</p><p>  void __fastcall TF_Data::FormCreate(TObject *Sender)</p><p>  { //窗體創(chuàng)建事件</p><p>  DataModule1->DS_Data->Enabled=true

125、;</p><p><b>  //檢測數(shù)據(jù)表使能</b></p><p>  DataModule1->DS_Record->Enabled=true;//?</p><p><b>  //檢測記錄表使能</b></p><p><b>  }</b></

126、p><p>  //---------------------------------------------------------------------------</p><p>  void __fastcall TF_Data::BB_ConfirmClick(TObject *Sender)</p><p><b>  {</b>&l

127、t;/p><p>  DataModule1->AQ_Record->Post();//遞交檢測記錄表數(shù)據(jù) ?</p><p><b>  }</b></p><p>  //---------------------------------------------------------------------------</p

128、><p>  void __fastcall TF_Data::BB_CancelClick(TObject *Sender)</p><p><b>  {</b></p><p>  DataModule1->AQ_Record->Cancel();//取消檢測記錄表數(shù)據(jù)更新?</p><p><b&g

129、t;  }</b></p><p>  //---------------------------------------------------------------------------</p><p>  void __fastcall TF_Data::BB_PrintClick(TObject *Sender)</p><p><b&

130、gt;  {</b></p><p>  F_Print->QuickRep1->Preview() ;//顯示報表預覽?</p><p><b>  }</b></p><p>  void __fastcall TF_Data::BB_QuitClick(TObject *Sender)</p>&l

131、t;p><b>  {</b></p><p>  F_Data->Close();//關閉檢測數(shù)據(jù)查看窗體 ?</p><p><b>  }</b></p><p>  void __fastcall TF_Data::BitBtn1Click(TObject *Sender)</p><

132、;p><b>  {</b></p><p>  DataModule1->AT_Data->Post() ;//遞交檢測數(shù)據(jù)表的數(shù)據(jù)更新?</p><p><b>  }</b></p><p>  void __fastcall TF_Data::BitBtn2Click(TObject *Sende

133、r)</p><p><b>  {</b></p><p>  DataModule1->AT_Data->Cancel();//取消檢測數(shù)據(jù)表的數(shù)據(jù)更新?</p><p><b>  }</b></p><p>  void __fastcall TF_Data::BitBtn3Cl

134、ick(TObject *Sender)</p><p><b>  {</b></p><p>  DataModule1->AT_Data->Append() ;//追加檢測數(shù)據(jù)表的數(shù)據(jù)?</p><p><b>  }</b></p><p>  void __fastcall T

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論