Bài thực hành 1
Bà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 Connection
1. 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ành
Tạ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 project
2.2 Mở kết nối cơ sở dữ liệu
Việ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.Connection
Private Sub mnuOpenConnection_Click()
On Error Goto ErrHandle
Set adoCn = New ADODB.Connection
adoCn.ConnectionString=“Provider=Microsoft.Jet.OLEDB.4.0;” & _
“Data Source = D:\qlbanhang.mdb”
adoCn.Open
MsgBox “Kết nối thành công”
Exit Sub
ErrHandle:
MsgBox Err.Description
End Sub
Chuỗ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 If
End Sub
Trong đ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ĩa
adStateClosed 0 Kết nối đang đóng
adStateOpen 1 Kết nối đã mở
adStateConnecting 2 Đang thực hiện kết nối
2.4 Sử dụng điều khiển CommonDialog để mở kết nối cơ sở dữ liệu
Trong 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 Sub
ErrHandle:
MsgBox Err.Description
End Sub
Chạ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ổ sung
Qua 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ình
Phầ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 sau
Menu Tên menu
Hệ thống mnuHethong
Mở CSDL
Ctrl + O
mnuMoCSDL
Đóng CSDL
Ctrl + F4
mnuDongCSD
L
Thoát mnuThoat
Dữ liệu mnuDulieu
Hồ sơ nhân viên mnuHosonhan
vien
Mặt hàng mnuMathang
Hóa đơn bán hàng mnuHoadon
Tác nghiệp mnuTacnghiep
Lập hóa đơn mnuLaphoado
n
Chi trả lương tháng mnuTraluong
In ấn mnuInan
Trợ giúp mnuTrogiup
3.2 Lập trình
1. 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 daketnoi
mnuDongCSDL.Enabled = daketnoi
mnuDulieu.Visible = daketnoi
mnuTacnghiep.Visible = daketnoi
mnuInan.Visible = daketnoi
End Sub
2. 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à False
Private Sub MDIForm_Load()
‘Trạng thái menu khi chưa mở kết nối CSDL
ThietlapTrangthaiMenu False
End Sub
3. 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 ý: