Bài thực hành ADO
Bài thực hành 1Bài thực hành 1 Kết nối nguồn dữ liệu với đối tượng Connection Kết nối nguồn dữ liệu với đối tượng Connection1. Tổng quanĐối tượng Connection được sử dụng để thực hiện một kết nối đến nguồn cơ sở dữ liệu. Đây là đối tượng nằm ở mức cao nhất trong mô hình đối tượng ADO. Các thao tác khác trên dữ liệu thông qua các đối tượng như Recordset hay Command đều phải dựa trên một kết nối đã được mở.Trong các ứng dụng cơ sở dữ liệu, việc mở một kết nối cơ sở dữ liệu thường được tiến hành đầu tiên, trước tất cả các thao tác khác. Trong bài này, chúng ta sẽ tìm hiểu về đối tượng Connection và một số thao tác cơ bản trên đối tượng này.2. Nội dung thực hànhTạo mới một Project và thiết kế menu cho Form này như sau:`2.1 Bổ sung thư viện ADO cho ProjectĐể có thể sử dụng được các đối tượng ADO, bạn phải bổ sung thư viện này vào Project. Tiến hành các bước sau đây:• Chọn menu Project → References…• Trong hộp thoại xuất hiện, đánh dấu chọn mục Microsoft ActiveX Data Objects 2.0 Library để bổ sung thư viện này.Lưu ý: Ở các bài thực hành sau, việc bổ sung thư viện ADO là việc bạn phải thực hiện cho mỗi một project2.2 Mở kết nối cơ sở dữ liệuViệc kết nối cơ sở dữ liệu được thực hiện thông qua đối tượng ADODB.Connection. Thông thường, quá trình này bao gồm các bước sau:• Khai báo biến kết nối. Trong hầu hết các ứng dụng, biến kết nối là biến được sử dung xuyên suốt trong chương trình. Do đó, biến này thường được khai báo dưới dạng Public hoặc Global trong module chương trình. Biến kết nối được khai báo theo cú pháp sau: Public|Global|Dim <tên biến> As ADODB.Connection• Tạo mới biến kết nối thông qua câu lệnh có cú pháp như sau: Set <tên biến> = New ADODB.Connection• Qui định chuỗi tham số kết nối thông qua thuộc tính ConnectionString của biến kết nối. Chuỗi tham số kết nối cung cấp các thông số cần thiết để có thể thiết lập được kết nối đến nguồn dữ liệu. Một chuỗi tham số kết nối được viết dưới dạng “tham_số_1=giá_trị_1;tham_số_2=giá_trị_2;…”• Qui định một số thuộc tính khác nếu cần thiết• Mở kết nối bằng cách gọi phương thức Open của biến kết nốiĐoạn mã dưới đây khai báo một biến kết nối và thực hiện việc mở kết nối đến cơ sở dữ liệu có đường dẫn là D:\QLBANHANG.MDB khi sự kiện Click xảy ra trên menu Open Connection. Trong đoạn mã này, biến kết nối (adoCn) được khai báo ngay trong Form và chỉ có phạm vi sử dụng trong Form này. Cần lưu ý rằng, trong hầu hết các chương trình, biến kết nối cần được khai báo để có thể sử dụng thuận lợi trong toàn project.Dim adoCn As ADODB.ConnectionPrivate Sub mnuOpenConnection_Click()On Error Goto ErrHandleSet adoCn = New ADODB.ConnectionadoCn.ConnectionString=“Provider=Microsoft.Jet.OLEDB.4.0;” & _ “Data Source = D:\qlbanhang.mdb”adoCn.OpenMsgBox “Kết nối thành công”Exit SubErrHandle:MsgBox Err.DescriptionEnd SubChuỗi tham số kết nối của đối tượng Connection trong đoạn mã lệnh trên cung cấp giá trị cho hai tham số:• Provider: Tham số này chỉ ra trình cung cấp sử dụng để thực hiện kết nối đến cơ sở dữ liệu. Trong trường hợp này là trình cung cấp Jet sử dụng cho cơ sở dữ liệu Access. Các loại cơ sở dữ liệu khác nhau sẽ có các trình cung cấp khác nhau.• Data Source: Tham số này xác định nguồn dữ liệu sẽ kết nối đến. Trong trường hợp này là tên và đường dẫn đến cơ sở dữ liệu. Ngoài hai tham số trên, trong nhiều trường hợp bạn phải cung cấp thêm một số tham số khác cho chuỗi tham số kết nối như User ID, Password, Initial Catalog,… (Xem lại bài thực hành 1 để biết được cách có được chuỗi tham số kết nối).2.3 Đóng kết nối Khi một biến kết nối không còn được sử dụng hoặc cần phải mở lại kết nối, bạn phải đóng kết nối bằng cách gọi phương thức Open. Đoạn mã dưới đây thực hiện việc đóng kết nối khi menu Close Connection được nhấp chọn.Private Sub mnuCloseConnection_Click() If Not adoCn Is Nothing Then If adoCn.State = adStateOpen Then adoCn.Close End If Set adoCn = Nothing End IfEnd SubTrong đoạn chương trình trên, ta dựa vào thuộc tính State của đối tượng adoCn để xác định xem kết nối đã được mở hay chưa. Thuộc tính này cho biết trạng thải hiện tại của một biến kết nối và có thể nhận các giá trị sau:Hằng giá trị Giá trị Ý nghĩaadStateClosed 0 Kết nối đang đóngadStateOpen 1 Kết nối đã mởadStateConnecting 2 Đang thực hiện kết nối2.4 Sử dụng điều khiển CommonDialog để mở kết nối cơ sở dữ liệuTrong phần 2.2, bạn đã biết được cách thực hiện việc mở một kết nối đến cơ sở dữ liệu. Tuy nhiên, có thể thấy việc sử dụng đường dẫn đến cơ sở dữ liệu một cách cố định trong mã lệnh sẽ không đảm bảo được tính linh hoạt cho chương trình. Trong phần này, bạn sẽ sử dụng điều khiển CommonDialog cho phép chọn đường dẫn đến cơ sở dữ liệu khi mở kết nối cơ sở dữ liệu.• Bổ sung thêm vào Form điều khiển CommonDialog (Nếu trên ToolBox chưa có điều khiển này thì chọn menu Project → Components và đánh dấu chọn mục Microsoft Common Dialog Control 6.0 để bổ sung thêm điều khiển này vào ToolBox).• Viết lại đoạn mã lệnh cho thủ tục mnuOpenConnection_Click như sau: Private Sub mnuOpenConnection_Click() On Error GoTo ErrHandle Set adoCn = New ADODB.Connection CommonDialog1.Filter = "Microsoft Access|*.mdb" CommonDialog1.FileName = "" CommonDialog1.ShowOpen adoCn.ConnectionString="Provider=Microsoft.Jet.OLEDB.4.0;" & _ "Data Source = " + CommonDialog1.FileName adoCn.Open MsgBox "Da ket noi co so du lieu" Exit SubErrHandle: MsgBox Err.DescriptionEnd SubChạy kiểm thử chương trình, bạn sẽ thấy được mỗi khi ta nhấp chọn menu Open Connection, hộp thoại Open sẽ xuất hiện để cho phép bạn chọn cơ sở dữ liệu cần mở.3. Yêu cầu bổ sungQua nội dung thực hành ở trên, bạn có thể thấy rằng việc mở kết nối cơ sở dữ liệu là thao tác được tiến hành trước các thao tác khác trên cơ sở dữ liệu. Ngoài ra, một biến kết nối không phải chỉ sử dụng trong một module nào đó mà được sử dụng trong phạm vi toàn chương trình. Do vậy, biến kết nối cần phải được khai báo dưới dạng Public (hoặc Global) trong module chương trìnhPhần này yêu cầu bạn thiết kế một hệ thống menu hoàn chỉnh cho một chương trình ứng dụng và lập trình xử lý việc mở và đóng kết nối cơ sở dữ liệu cho chương trình. Ngoài ra, bạn sẽ phải thiết lập trạng thái của menu tương ứng với trạng thái kết nối/hoặc không kết nối cơ sở dữ liệu của biến kết nối.3.1 Thiết kế giao diện chương trình• Tạo mới một Project và bổ sung vào project này: Một MDI Form: đặt tên là MainForm. Đây sẽ là form chính của chương trình. Một Module và đặt tên là mdlMain.• Thiết lập thuộc tính Startup Object cho Project là MainForm.• Thiết kế hệ thống menu cho form chính theo như mô tả ở bảng sauMenu Tên menu Hệ thống mnuHethongMở CSDLCtrl + OmnuMoCSDLĐóng CSDLCtrl + F4mnuDongCSDLThoát mnuThoatDữ liệu mnuDulieuHồ sơ nhân viên mnuHosonhanvienMặt hàng mnuMathangHóa đơn bán hàng mnuHoadonTác nghiệp mnuTacnghiepLập hóa đơn mnuLaphoadonChi trả lương tháng mnuTraluongIn ấn mnuInanTrợ giúp mnuTrogiup3.2 Lập trình1. Viết thủ tục sau đây cho MainForm. Thủ tục có chức năng thiết lập trạng thái cho các menu trên Form tùy thuộc vào việc kết nối cơ sở dữ liệu đã được mở hay chưa. Tham số của thủ tục có giá trị là True nếu kết nối đã mở và nhận giá trị là False nếu ngược lại.Public Sub ThietlapTrangthaiMenu(Byval daketnoi As Boolean)mnuMoCSDL.Enabled = Not daketnoimnuDongCSDL.Enabled = daketnoimnuDulieu.Visible = daketnoimnuTacnghiep.Visible = daketnoimnuInan.Visible = daketnoiEnd Sub2. Tại thủ tục đáp ứng sự kiện Form_Load của MainForm, gọi thủ tục trên với tham số là FalsePrivate Sub MDIForm_Load()‘Trạng thái menu khi chưa mở kết nối CSDLThietlapTrangthaiMenu False End Sub3. Lập trình xử lý sự kiện Click trên menu Mở CSDL (mnuMoCSDL) và Đóng CSDL (mnuDongCSDL) để thực hiện việc mở và đóng CSDL. Lưu ý: Sau khi mở hoặc đóng CSDL phải thiết lập lại trạng thái của menu cho phù hợp (bằng cách gọi thủ tục ThietlapTrangthaiMenu) Biến kết nối phải được khai báo dưới dạng Public trong module mdlMain.3.3 Kết nối với các nguồn dữ liệu khácHãy thiết kế và viết lại chương trình trong trường hợp CSDL bạn sử dụng không phải được tổ chức bởi Microsoft Access mà bởi các hệ quản trị CSDL khác như SQL Server, Oracle,… . Bài thực hành 1Bài thực hành 1 Kết nối nguồn dữ liệu với đối tượng Connection Kết nối nguồn. Library để bổ sung thư viện này.Lưu ý: Ở các bài thực hành sau, việc bổ sung thư viện ADO là việc bạn phải thực hiện cho mỗi một project2.2 Mở kết nối