Bài giảng môn Tin học đối tượng - Chương 12: Linh kiện phần mềm & truy xuất database
Bạn đang xem tài liệu "Bài giảng môn Tin học đối tượng - Chương 12: Linh kiện phần mềm & truy xuất database", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên
Tài liệu đính kèm:
- bai_giang_mon_tin_hoc_doi_tuong_chuong_12_linh_kien_phan_mem.pdf
Nội dung text: Bài giảng môn Tin học đối tượng - Chương 12: Linh kiện phần mềm & truy xuất database
- 12.1 Tổng quát về linh kiệnphầnmềm Mụctiêucủa qui trình phát triểnphầnmềmhướng đốitượng là tạora ứng dụng có cấutrúcthuầnnhất: tậpcácđốitượng sống và tương tác lẫn nhau. Mỗi đốitượng của ứng dụng có thể đượctạoranhờ 1 trong các cách sau : chọn menu Project.Add Class Module để tạo ra 1 class module mớimiêu tả cấutrúcchi tiếtcủa đốitượng cầntạora: cácthuộc tính dữ liệuvàcác method của đốitượng. chọn menu Project.Add File rồi khai báo đường dẫncủa file *.bas chứa1 class module của1 ứng dụng có sẵn để copy class module này vào Project ứng dụng hiệntại(đây là 1 phương pháp để thừakế thành quả). sử dụng các điềukhiểnsẵncócủa VB để xây dựng form giao diện. 'add' module *.ocx chứa 1 hay nhiều ActiveX Control đang được Windows quản lý vào Project ứng dụng hiệntại để dùng chúng y như các điềukhiển sẵncócủaVB. Môn : Tin học Khoa Công nghệ Thông tin Chương 12 : Linh kiệnphầnmềm & truy xuất database Trường ĐH Bách Khoa Tp.HCM Slide 323 12.2 Cách tạo và dùng linh kiệnphầnmềm VB cho phép tạo linh kiệnphầnmềm ActiveX Control nhờ 1 trong 3 loại Project ActiveX EXE, ActiveX DLL và ActiveX Control. Tuy nhiên qui trình chi tiết để tạo ActiveX Control vượt quá khuôn khổ nội dung của môn họcnày. Việc dùng ActiveX Control cũng giống như dùng control định sẵncủa VB, ta đặt chúng 1 cách trực quan vào các form giao diệnvớikíchthước và vị trí phù hợpvớinhucầu. Khi viết code, ta có thể truy xuấtcác thuộc tính dữ liệu và các method của ActiveX Control y như truy xuất các thành phần trong control định sẵn. Môn : Tin học Khoa Công nghệ Thông tin Chương 12 : Linh kiệnphầnmềm & truy xuất database Trường ĐH Bách Khoa Tp.HCM Slide 324 162
- Qui trình 'add' 1 ActiveX Control vào Project Để dùng1 linhkiệnphầnmềm ActiveX Control trong 1 form củaProject ứng dụng, trướchếttaphải thêm nó vào cửasổ Toolbox của Project theo qui trình điểnhình sau đây : 2. chọn tab Controls, duyệtvàchọnmụctương ứng, chọnOK. 1. ấnphảichuộtvàovị trí trống của Toolbox, chọn 3. Cửa mục Components sổ Toolbox sẽ chứa các icon miêu tả các Act. Control trong module vừa chọn. Môn : Tin học Khoa Công nghệ Thông tin Chương 12 : Linh kiệnphầnmềm & truy xuất database Trường ĐH Bách Khoa Tp.HCM Slide 325 Thí dụ về cách dùng ActiveX Control Để thấyviệc dùng ActiveX Control hầuxâydựng phầnmềmdễ dàng như thế nào, chúng ta hãy thử viết 1 trình duyệt Web vớichứcnăng tượng tự như IE của Microsoft, ta tạmgọi ứng dụng sắpviết này là MyIE. Việcviếtphầnmềmduyệt Web từđầurấtkhókhănvìbạncầnphải trang bị nhiềukiếnthứcnhư : kỹ thuậthiểnthị vănbảnvàđồ họa, kỹ thuậttương tác vớingười dùng thông qua bàn phím và chuột, kỹ thuật và qui trình viết1 chương trình dịch, lậptrìnhmạng dùng socket, giao thứctruyxuất tài nguyên Web HTTP (Hypertext Transfer Protocol), ngôn ngữ DHTML, Nhưng toàn bộ các công việc mà 1 trình duyệt Web cầnlàmđã được Microsoft đóng gói trong 1 linh kiệnphầnmềm tên là WebBrowser. Môn : Tin học Khoa Công nghệ Thông tin Chương 12 : Linh kiệnphầnmềm & truy xuất database Trường ĐH Bách Khoa Tp.HCM Slide 326 163
- Thí dụ về cách dùng ActiveX Control (tt) ActiveX Control "WebBrowser" là 1 đốitượng giao diệnchỉ chứa1 vùnghiểnthị nội dung hình chữ nhậtvớivị trívàkíchthước do ngườilập trình qui định. Interface củanóbaogồm3 loại: cácthuộc tính interface (khoảng 27), các method (khoảng 12) và các sự kiện(khoảng 16) mà người dùng có thể lậptrình thủ tục đáp ứng cho chúng. Ởđây chúng ta sẽ giớithiệu1 số method mà ta dùng trong việcviết ứng dụng MyIE : Navigate2 (URL, ) cho phép download trang Web hay file *.doc, *.xls, *.ppt, đượcxácđịnh bởi URL, hiểnthị nội dung của nó lên vùng hiểnthị rồichờ và xử lý sự tương tác củangười dùng (ấn vào vùng liên kết, ). GoBack cho phép quay về trang Web vừatruyxuất (ngay trước trang hiện hành). GoForward chophéptiếntới trang Web (ngay sau trang hiện hành). GoHome cho phép hiểnthị trang chủ. Refresh cho phép download và hiểnthị lại trang hiện hành. Stop cho phép dừng ngay việc download và hiểnthị trang Web hiện hành. ExecWB cho phép thực thi 1 số hành vi trên trang web như thay đổico chữ, in trang Web ra máy in, Môn : Tin học Khoa Công nghệ Thông tin Chương 12 : Linh kiệnphầnmềm & truy xuất database Trường ĐH Bách Khoa Tp.HCM Slide 327 Giao diện đề nghị củatrìnhMyIE Môn : Tin học Khoa Công nghệ Thông tin Chương 12 : Linh kiệnphầnmềm & truy xuất database Trường ĐH Bách Khoa Tp.HCM Slide 328 164
- Chi tiết các option trong menu và toolbar (tt) Môn : Tin học Khoa Công nghệ Thông tin Chương 12 : Linh kiệnphầnmềm & truy xuất database Trường ĐH Bách Khoa Tp.HCM Slide 329 Phân tích & thiếtkế giao diện Trình MyIE có giao diệnSDI gồm 1 menu bar, 1 toolbar, 1 ComboBox liệtkê các URL vừatruyxuất, 1 ActiveX Control "WebBrowser" xử lý việctruyxuất, hiểnthị các trang Web và chờ phụcvụ các tương tác củangười dùng. Qui trình chi tiếtxâydựng ứng dụng MyIE sẽđược trình bày trong bài thực hành số 4, ở đây chỉ tóm tắtcácbước chính : Tạo project loại "VB Application Wizard" và trả lờicácbước Wizard để tạo Project. Chọn Tools.Menu Editor để tạo menu bar theo đặctả của slide trước. Qui trình dùng Menu Editor đượcgiớithiệutrongchương 4. Cũng đọclạichương 4 để biết qui trình tạo/hiệuchỉnh Toolbar. tạo(vẽ) ComboBox nhập URL mới và liệt kê các URL đã truy xuất. tạo(vẽ) control "WebBrowser". Không cầnvẽ ComboBox và WebBrowser chính xác vì code sẽ xác định động mỗi lần cửa sổ chương trình thay đổi. tạothủ tụcxử lý sự kiện cho các menu option và toolbar button rồiviết code cho chúng. Code củacácthủ tụcnàychủ yếu làm "cò" và gọi các method tương ứng trong đốitượng WebBrowser thựcthi. Môn : Tin học Khoa Công nghệ Thông tin Chương 12 : Linh kiệnphầnmềm & truy xuất database Trường ĐH Bách Khoa Tp.HCM Slide 330 165
- Phân tích & thiếtkế giao diện (tt) Lưuý rằng trướckhithiếtkếđượcgiaodiệncủa trình MyIE, bạncần 'add' các linh kiện ActiveX Control sau đây : Microsoft Common Dialog Control 6.0. Microsoft Internet Control. Microsoft Windows Common Controls 6.0. Lưuý rằng qui trình Wizard cho loạiProject SDI đãtạosẵnchota1 form của chương trình tên là frmMain. Form này đãchứasẵn 1 menu bar, 1 Toolbar. Chúng ta chỉ cầnhiệuchỉnh lại 2 thành phầnnàychứ không cầnphảitạomới chúng. Môn : Tin học Khoa Công nghệ Thông tin Chương 12 : Linh kiệnphầnmềm & truy xuất database Trường ĐH Bách Khoa Tp.HCM Slide 331 12.3 Tổng quát về truy xuất database Trong chương 11, chúng ta đãgiớithiệu qui trình truy xuấtdữ liệu trên các file. Mộttrongcácdạng file đãgiớithiệu là Random File, file này là danh sách các record dữ liệucócấutrúcvàđộ dài giống nhau, mỗi record chứanhiều field dữ liệu, thí dụ file chứacáchồ sơ sinh viên, file chứacáchồ sơ nhà, file chứacác hồ sơđường xá Hầuhếtcácứng dụng hiệnnay (nhấtlàcácứng dụng nghiệpvụ) đềuphảitruy xuất các random file. Việcquản lý các random file bao gồmnhiềutácvụ như tạo file mớivớicấu trúc record cụ thể, thêm/bớt/hiệuchỉnh/duyệt các record, tìm kiếm các record thỏa mãn 1 tiêu chuẩnnàođó, Để thựchiệncáctácvụ trên (nhất là tìm kiếm record) hiệuquả, tin cậy, ta cần nhiềukiếnthứckhác nhau và phảitốnnhiềucôngsức. Random file (với1 số sự cảitiếnvàtăng cường) đượcgọi là database quan hệ. Có nhiều format database quan hệ khác nhau đang được dùng. Để giải phóng các ứng dụng khỏiviệcquản lý database, ngườitađãxâydựng ứng dụng đặc biệt : DBMS (Database Management System). Ứng dụng sẽ nhờ DBMS để truy xuất database đượcdễ dàng. Môn : Tin học Khoa Công nghệ Thông tin Chương 12 : Linh kiệnphầnmềm & truy xuất database Trường ĐH Bách Khoa Tp.HCM Slide 332 166
- Các giao tiếplập trình truy xuất database Về nguyên tắc, ứng dụng VB (hay viếtbằng ngôn ngữ khác) có thể truy xuất1 database bằng 1 trong các giao tiếplậptrìnhsauđây : ADO (ActiveX Data Objects) DAO (Data Access Objects) ODBC (Open Database Connectivity) DBMS-Specific Language Direct to database (file) Trong các giao tiếptruyxuất database trên chỉ có ADO là dễ dàng hơncả, đại đasố trường hợptachỉ tạotrực quan các ActiveX Control và khai báo các thuộctínhcủa chúng là đãtruyxuất được database mà không cầnviết code. Trong trường hợpphảiviết code thì cũng rấtngắnvàdễ dàng. Môn : Tin học Khoa Công nghệ Thông tin Chương 12 : Linh kiệnphầnmềm & truy xuất database Trường ĐH Bách Khoa Tp.HCM Slide 333 Truy xuất database dùng ADO thông qua các ActiveX Control Truy xuất database dùng ADO thông qua các ActiveX Control là phương pháp truy xuất database trực quan và dễ dàng nhất. Đasố các database trên Windows do Access tạoratrongđómỗi file database chứanhiều table, mỗi table là danh sách n record có cấu trúc chung nào đó. Qui trình điểnhìnhtruyxuất các record của 1 table trong 1 database Access có thể dùng các đốitượng sau : Dùng đốitượng ADODB trong thư viện "Microsoft ActiveX Data Objects 2.x Library" để có thể liệt kê các table trong 1 database Access. Dùng đốitượng Microsoft Data Control 6.0 để quảnlý1 RecordSetchứatập các record của 1 table thỏa mãn 1 điềukiện nào đó. Dùng đốitượng Microsoft DataGrid Control 6.0 để hiểnthị các record của1 Data Control và cho phép user thêm/bớt/hiệuchỉnh các record. Để thấyrõviệctruyxuất database là rấtdễ dàng, ta hãy viết1 ứng dụng truy xuất database dạng Access có giao diệnnhư slide sau : Môn : Tin học Khoa Công nghệ Thông tin Chương 12 : Linh kiệnphầnmềm & truy xuất database Trường ĐH Bách Khoa Tp.HCM Slide 334 167
- Giao diện đề nghị của ứng dụng truy xuấtdatabase TextEdit qui định file cầntruyxuất. ComboBox liệtkê các Table trong file. ADODC quảnlýcác record thỏamãn1 điềukiệnmong muốn(cóthểẩn đí). DataGrid hiểnthị các record trong ADODC để user khảo sát và hiệu chỉnh. Môn : Tin học Khoa Công nghệ Thông tin Chương 12 : Linh kiệnphầnmềm & truy xuất database Trường ĐH Bách Khoa Tp.HCM Slide 335 Qui trình xây dựng ứng dụng của slide trước Ta có thể tạoproject dạng "Standard EXE", để dùng các điềukhiển trong Form ta cần 'add' các ActiveX Control sau vào Project : Microosft Data Control 6.0 để quảnlý1 RecordSetchứatập các record trong 1 table. Microsoft DataGrid Control 6.0 để hiểnthị các record của 1 Data Control và cho phép user thêm/bớt/hiệuchỉnh các record. Microsoft Common Dialog Control 6.0 để hiểnthị cửasổ duyệt file và chọn file cầntruyxuất. Để dùng được đốitượng ADODB trong Project, ta chọn menu Project.References để chọnthư việnsau: Microsoft ActiveX Data Objects 2.x Library, với x =1 | 2 | 3 | 4 | 5 Thiếtkế trực quan form theo slide trước, tạocácthủ tụcxử lý sự kiệncho button Browse và sự kiện Click cho ComboBox. Môn : Tin học Khoa Công nghệ Thông tin Chương 12 : Linh kiệnphầnmềm & truy xuất database Trường ĐH Bách Khoa Tp.HCM Slide 336 168
- Chi tiết các thủ tụcxử lý sự kiện ' Thủ tụcxử lý click button Browse Private Sub cmdBrowse_Click() ' hiểnthị dialog box duyệtvàchọn file CommonDialog1.ShowOpen ' hiểnthị file đượcchọn vào textbox txtFileName.Text = CommonDialog1.FileName ' duyệt các table và hiểnthị tên của chúng vào ComboBox ListAccessTables (txtFileName.Text) End Sub ' Thủ tụcxử lý khi user chọn Table trong danh sách Private Sub cbTable_Click() Adodc1.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;_ Data Source=" & txtFileName.Text Adodc1.RecordSource = cbTable.Text Adodc1.Refresh End Sub ' Thủ tụcphụcvụ sự kiệnform bị thay đổikíchthước. Private Sub Form_Resize() ' vẽ lại DataGrid để phù hợpvớikíchthướcmớicủaform ScaleMode = vbPixels RsList.Move 5, 60, Me.ScaleWidth - 10, Me.ScaleHeight - 65 End Sub Môn : Tin học Khoa Công nghệ Thông tin Chương 12 : Linh kiệnphầnmềm & truy xuất database Trường ĐH Bách Khoa Tp.HCM Slide 337 Chi tiếtthủ tụchiểnthị danh sách các Table của database Private Sub ListAccessTables(strDBPath As String) Dim adoConnection As ADODB.Connection, adoRsFields As ADODB.Recordset While cbTable.ListCount <> 0 ' Xóa danh sách hiện hành cbTable.RemoveItem 0 Wend ' Tạo 1 connection đến file database Set adoConnection = New ADODB.Connection adoConnection.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & strDBPath ' Duyệt các tables, 'add' tên củatừng table vào danh sách ComboBox. Set adoRsFields = adoConnection.OpenSchema(adSchemaTables) With adoRsFields Do While Not .EOF If .Fields("TABLE_TYPE") = "TABLE" Then cbTable.AddItem .Fields("TABLE_NAME") End If .MoveNext Loop End With adoRsFields.Close ' đóng và xóa recordset chứa các table Set adoRsFields = Nothing adoConnection.Close ' đóng và xóa connection đến file database Set adoConnection = Nothing End Sub Môn : Tin học Khoa Công nghệ Thông tin Chương 12 : Linh kiệnphầnmềm & truy xuất database Trường ĐH Bách Khoa Tp.HCM Slide 338 169
- Lậptrìnhtruyxuất database dùng ADO Định nghĩa DSN (Data source name) miêu tả file database, nếucóbướcnày, ứng dụng truy xuất database thông qua tên luận lý DSN mà không cầnbiết chính xác vị trí đường dẫn file database và máy chứa file database. Dùng icon "ODBC " trong Control Panel của Windows để định nghĩaDSN. Trong ứng dụng ta dùng đốitượng ADODB để truy xuất database theo qui trình điểnhìnhsau: 1. tạo1 đốitượng Connection miêu tả database cầntruyxuất. 2. gọi method OpenSchema trên đốitượng Connection để tìm các Table trên database. 3. khi user chọn 1 Table (hay dùng lệnh SQL để miêu tảđiềukiệnxácđịnh các record), ta gọi method Execute trên đốitượng Connection để tạo1 đốitượng RecordSet chứa các record tìm được. 4. duyệt các record trong RecordSet và xử lý chúng theo yêu cầu. 5. đóng và xóa RecordSet và lậplạicácbước3, 4 để xử lý Table khác. 6. đóng và xóa các đốitượng đãtạorađể giải phóng bộ nhớ do chúng chiếm. Môn : Tin học Khoa Công nghệ Thông tin Chương 12 : Linh kiệnphầnmềm & truy xuất database Trường ĐH Bách Khoa Tp.HCM Slide 339 Thí dụ lập trình truy xuất database dùng ADO TextEdit qui định file cầntruyxuất. Button duyệtvàchọn file database. ComboBox liệtkê các Table trong file. Listbox hiểnthị các record trong 1 Table đãchọn(để xem chứ không hiệuchỉnh). Môn : Tin học Khoa Công nghệ Thông tin Chương 12 : Linh kiệnphầnmềm & truy xuất database Trường ĐH Bách Khoa Tp.HCM Slide 340 170
- Chi tiết các thủ tụcxử lý sự kiện Dim adoConnection As ADODB.Connection ' biến tham khảo đến Connection Dim adoRsFields As ADODB.Recordset ' biến tham khảo đến RecordSet ' Thủ tụcxử lý click button Browse Private Sub cmdBrowse_Click() ' hiểnthị dialog box duyệtvàchọn file CommonDialog1.ShowOpen ' hiểnthị file đượcchọn vào textbox txtFileName.Text = CommonDialog1.FileName ' duyệt các table và hiểnthị tên của chúng vào ComboBox ListAccessTables (txtFileName.Text) End Sub ' Thủ tụcphụcvụ sự kiện form thay bị thay đổikíchthước. Private Sub Form_Resize() ' vẽ lạiListBoxđể phù hợpvớikíchthướcmớicủaform ScaleMode = vbPixels RsList.Move 5, 60, Me.ScaleWidth - 10, Me.ScaleHeight - 65 End Sub Môn : Tin học Khoa Công nghệ Thông tin Chương 12 : Linh kiệnphầnmềm & truy xuất database Trường ĐH Bách Khoa Tp.HCM Slide 341 Chi tiếtthủ tụchiểnthị danh sách các Table của database Private Sub ListAccessTables(strDBPath As String) While cbTable.ListCount <> 0 ' Xóa danh sách hiện hành cbTable.RemoveItem 0 Wend ' 1. Tạo 1 connection đến file database Set adoConnection = New ADODB.Connection adoConnection.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & strDBPath ' 2. Duyệt các tables, 'add' tên củatừng table vào danh sách ComboBox. Set adoRsFields = adoConnection.OpenSchema(adSchemaTables) With adoRsFields Do While Not .EOF If .Fields("TABLE_TYPE") = "TABLE" Then cbTable.AddItem .Fields("TABLE_NAME") End If .MoveNext Loop End With adoRsFields.Close ' đóng và xóa recordset chứa các table Set adoRsFields = Nothing ' lưuý vẫn để mở Connection đến file database hầutruyxuấtlại End Sub Môn : Tin học Khoa Công nghệ Thông tin Chương 12 : Linh kiệnphầnmềm & truy xuất database Trường ĐH Bách Khoa Tp.HCM Slide 342 171
- Chi tiết các thủ tụcxử lý sự kiện ' Thủ tụcxử lý click chọn table trong ComboBox Private Sub cbTable_Click() Dim fcount As Integer, rcount As Integer, strBuf As String ' 3. Tạo đốitượng RecordSet chứa các record của Table đượcchọn Set adoRsFields = adoConnection.Execute("SELECT * FROM " & cbTable.Text) ' 4. Duyệt các record trong RecordSet và hiểnthị chúng trong ListBox With adoRsFields rcount = 0 ' chỉ số record fcount = .Fields.Count ' số field trong từng record Do While Not .EOF ' duyệttừng record trong recordset rcount = rcount + 1 strBuf = Str(rcount) & ": " & .Fields(0).Value For idx = 1 To fcount - 1 ' duyệttừng field và nốikết vào chuỗistrBuf strBuf = strBuf & ", " & .Fields(idx).Value Next RsList.AddItem strBuf ' add chuỗikếtquả vào Lisbox .MoveNext ' di chuyển đến record kế tiếp Loop End With adoRsFields.Close ' đóng và xóa recordset Set adoRsFields = Nothing End Sub Môn : Tin học Khoa Công nghệ Thông tin Chương 12 : Linh kiệnphầnmềm & truy xuất database Trường ĐH Bách Khoa Tp.HCM Slide 343 12.4 Tổng quát về hoạt động debug ứng dụng Sau khi viết code cho ứng dụng xong, ta sẽ thử chạynóđể xác định xem nó giải quyết đúng yêu cầu không. Thường ứng dụng chứa nhiều lỗisaithuộc 1 trong 2 loạisau: các lỗivề từ vựng (tên các phầntử, từ dành riêng, ) và cú pháp của các phầntử cấu thành ứng dụng. VB sẽ phát hiệncáclỗi này dễ dàng và hiểnthị thông báo lỗi cho ta xem xét và sửachữa. Thường sau khi được VB thông báo về các lỗi này, ta dễ dàng sửa chúng. các lỗivề giảithuậtcủa ứng dụng. VB không thể phát hiệncáclỗi này vì chúng thuộcphạmtrùngữ nghĩa. Ứng dụng sẽ chạy theo giải thuật đượcmiêutả, ta phảitựđánh giá tính đúng/sai về giảithuật, nhưng việc tìm lỗigiảithuậtthường rất khó. Để giúp đỡ ngườilập trình dễ dàng tìm ra các lỗigiảithuật, VB cung cấp công cụ cho phép họ kiểm soát được qui trình chạy ứng dụng và truy xuấtcác biếndữ liệucủachương trình, công cụ này đượcgọi là 'Debug'. Môn : Tin học Khoa Công nghệ Thông tin Chương 12 : Linh kiệnphầnmềm & truy xuất database Trường ĐH Bách Khoa Tp.HCM Slide 344 172
- Tổng quát về hoạt động debug ứng dụng Trong quá trình debug, ứng dụng sẽở1 trong 2 trạng thái sau : Pause : trạng thái của ứng dụng trướckhichạyhay khidừng lại theo 1 điều kiệndừng nào đócủangười debug. VB sẽ ghi nhớ lệnh sắp thi hành trướckhi dừng (lệnh đầutiêncủa ứng dụng nếunóchưabắt đầuchạy). Do tính lịch sử, ta dùng thuậtngữ PC - program counter để nói về lệnh này. Ở trạng thái này, người debug có thể xem giá trị của các biếndữ liệu để biết ứng dụng chạy đúng hay sai theo yêu cầurồi điềukhiểnviệc thi hành tiếp theo của ứng dụng, lúc này ứng dụng sẽ chuyển sang trạng thái Running. Running : trạng thái mà ứng dụng đang chạycáclệnh củanóđến khi nó gặp 1 điềukiệndừng đãthiếtlậptrước, lúc này ứng dụng sẽ chuyểnvề trạng thái Pause. Trong quá trình debug, ứng dụng ở trạng thái Pause chủ yếuthờigianvàngười debug tương tác với ứng dụng chủ yếu ở trạng thái này. Mỗikhiứng dụng được chạytiếp, nó chuyển qua trạng thái Running, nhưng sẽ nhanh chóng chạy đến lệnh dừng và chuyểnvề trạng thái Pause (trừ phi bị 'block' chờ I/O hay bị 'loop' trong các vòng lặpvôtận). Môn : Tin học Khoa Công nghệ Thông tin Chương 12 : Linh kiệnphầnmềm & truy xuất database Trường ĐH Bách Khoa Tp.HCM Slide 345 Các thao tác để xem và hiệuchỉnh biếndữ liệu Để xem nội dung của1 biếndữ liệu, người debug có thể : chọn menu Debug.Add Watch để thêm 1 biểuthức(thường là biếndữ liệu) vào cửasổ Watch để xem nội dung của nó. chọn menu Debug.Edit Watch để hiệuchỉnh biểuthức(thường là biếndữ liệu) hiện hành ở cửasổ Watch (context, watch type). dờichuột đến tên biếntrongcửasổ code, 1 cửasổ nhỏ chứagiátrị củabiến đósẽđượchiểnthịđểngười debug xem xét. Để hiểnthị cửasổ chứadanhsáchcácthủ tục đang thựchiệndỡ dang (các thủ tục lồng nhau theo thứ tự), người debug có thể : chọn menu View.Call Stacks. Để xem vị trí PC hiện hành (lệnh sắpthựchiệnkế tiếp), người debug có thể : chọn menu Debug.Show Next Statement (thường khi ứng dụng dừng lại, nó sẽ hiểnthị lệnh chạykế tiếp-lệnh bị dừng vớimàutôđặcbiệtvàcódấumũi tên ở lề trái củalệnh). chọn menu Debug.Set Next Statement để thiếtlậplệnh chứa cursor hiện hành là lệnh chạykế tiếp (thay vì lệnh bị dừng trước đó) Môn : Tin học Khoa Công nghệ Thông tin Chương 12 : Linh kiệnphầnmềm & truy xuất database Trường ĐH Bách Khoa Tp.HCM Slide 346 173
- Các lệnh thiếtlập điềukiệndừng Nếu điềukiệndừng là vị trí lệnh cụ thể thì người debug có thể : chọn menu Debug.Clear All Breakpoints để xóa tấtcả các điểmdừng (breakpoint) hiệntại. Điểmdừng là lệnh mà khi ứng dụng chạy đến, ứng dụng sẽ dừng lạivàchuyểnvề trạng tháo Pause để người debug kiểm soát nội dung dữ liệucủa ứng dụng. chọn menu Debug.Toggle Breakpoint để thiếtlập/xóa điểmdừng ở lệnh chứa cursor hiện hành (có thể thựchiện nhanh chứcnăng này bằng cách dời cursor đếnlề trái củalệnh cầnthiếtlập/xóa điểmdừng rồi click chuột). Nếu điềukiệndừng là biếndữ liệu/biểuthứcnàođóbị thay đổihay cógiátrị True thì người debug có thể : chọn menu Debug.Add Watch, nhậpbiểuthức(thường là 1 biếndữ liệu) rồi chọn điềukiệndừng "Break when value is True" hay "Break when value changes". chọn menu Debug.Edit Watch, hiệuchỉnh biểuthứchiện hành (thường là 1 biếndữ liệu) rồichọn điềukiệndừng "Break when value is True" hay "Break when value changes". Ta có thể (và nên) thiếtlập nhiều điềukiệndừng đồng thời để 'rào chắn' luồng thi hành củachương trình. Môn : Tin học Khoa Công nghệ Thông tin Chương 12 : Linh kiệnphầnmềm & truy xuất database Trường ĐH Bách Khoa Tp.HCM Slide 347 Các lệnh điềukhiểnchạytiếp ứng dụng Để chạytiếp ứng dụng từ vị trí PC hiện hành, người debug có thể : o chọn menu Run.Start để bắt đầuchạy ứng dụng, ứng dụng chỉ dừng lạikhi gặp điềukiệndừng nào đó đã đượcthiếtlập. o chọn menu Run.Continue để chạytiếptừ vị trí PC hiện hành, ứng dụng chỉ dừng lạikhigặp điềukiệndừng nào đó đã đượcthiếtlập. o chọn menu Debug.Step Over để chạytiếp1 lệnh rồidừng lại (Pause), nếu lệnh thi hành là lệnh gọithủ tục thì toàn bộ thủ tụcsẽ đượcchạy. Đây là lệnh cho phép thựchiệntừng lệnh theo mứcvĩ mô. o chọn menu Debug.Step Into để chạytiếp1 lệnh rồidừng lại (Pause), nếu lệnh thi hành là lệnh gọithủ tụcthìứng dụng sẽ dừng lại ở lệnh đầutiêncủa thủ tục. Đây là lệnh cho phép thựchiệntừng lệnh theo mứcvi mô. o chọn menu Debug.Step Out để chạytiếpcáclệnh còn lạicủathủ tụchiện hành rồiquay về và dừng lạisaulệnh gọithủ tục này (Pause). o chọn menu Debug.Run to Cursor để chạytiếp ứng dụng từ vị trí PC hiệnhành đếnlệnh chứacursor hiện hành rồidừng lại (Pause). Môn : Tin học Khoa Công nghệ Thông tin Chương 12 : Linh kiệnphầnmềm & truy xuất database Trường ĐH Bách Khoa Tp.HCM Slide 348 174
- Các lệnh điềukhiểnkhác Khi ứng dụng ở trạng thái 'Pause', người debug có thể thựchiệncáclệnh sau : chọn menu Run.End để kếtthúcviệcchạy ứng dụng. chọn menu Run.Restart để kếtthúcviệcchạy ứng dụng rồibắt đầuchạylạitừ đầu. chọn menu Run.Break để dừng độtngộtviệcchạy ứng dụng, lệnh đang thực hiệnsẽđược đánh dấu để ta dễ theo dõi. Chứcnăng này giúp ta biết ứng dụng đang bị 'loop' ởđoạnlệnh nào. Nếu ứng dụng đang bị 'block' chờ biến cố I/O, sẽ không có lệnh nào được dánh dấucả. Môn : Tin học Khoa Công nghệ Thông tin Chương 12 : Linh kiệnphầnmềm & truy xuất database Trường ĐH Bách Khoa Tp.HCM Slide 349 175