ADODB Connection

Việc sử dụng kết nối ADODB trong VBA giúp cho chúng ta có thể kết nối ứng dụng VBA với các loạicơ sở dữ liệu như là MS SQL, MySQL, MS Access ....
Theo mặc định ADODB connection không được bật sẵn do đo khi sử dụng chúng ta sẽ tiến hành bật tính năng trong phần  Microsoft ActiveX Data Objects reference


Sau khi add Refrences xong chúng ta sẽ tiến hành khai báo biến ADODB.Connection và ADODB.Recordset

    Dim cnn As New ADODB.Connection    Dim rst As New ADODB.Recordset
Để mở kết nối đến CSDL thì chúng ta cần khai báo chuỗi kết nối ( Connection String) . Vi dụ sau chúng ta mở kết nối đến CSLD SQL Server . 
Chúng ta tham khao link này đến lấy chuối kết nối phù hợp với CSDL của chúng ta
https://www.connectionstrings.com/

cnn.open ="Server=myServerAddress;Database=myDataBase;User Id=myUsername;Password=myPassword;"
Sau khi mở kết nối, tiếp theo là mở recordset
 rst.Open Source:="SELECT * FROM TBL_Customer", ActiveConnection:=cnn, CursorType:=adOpenKeyset, LockType:=adLockOptimistic
Có 2 thuộc tính chúng ta cần luu ý Cursor Type và Lock Type


1.Cursor Type
  • adOpenForwardOnly

Đây là mặc định. Đây là cách nhanh nhất và sử dụng ít bộ nhớ và lưu lượng mạng nhất.
Bạn chỉ có thể sử dụng .MoveNext để di chuyển các bản ghi (không phải .MoveFirst, v.v.).
Bạn sẽ không thấy những thay đổi đối với dữ liệu của những người dùng khác kể từ khi bạn mở recordset.
  • adOpenStatic
Bạn có thể sử dụng bất kỳ phương thức .Move nào (.MoveFirst / .MovePrev / ..).
Bạn sẽ không thấy những thay đổi đối với dữ liệu của những người dùng khác kể từ khi bạn mở recordset.
  • adOpenKeyset
Bạn có thể sử dụng bất kỳ phương thức .Move nào (.MoveFirst / .MovePrev / ..).
Bạn sẽ thấy một số thay đổi đối với dữ liệu (chỉ các bản ghi đã được chỉnh sửa / xóa) kể từ khi bạn mở tập bản ghi.
  • adOpenDynamic
Bạn có thể sử dụng bất kỳ phương thức .Move nào (.MoveFirst / .MovePrev / ..).
Bạn sẽ thấy Tất cả các thay đổi đối với dữ liệu (đã thêm / chỉnh sửa / xóa hồ sơ) bởi những người dùng khác kể từ khi bạn mở tập bản ghi.

2.Lock Type
Lock Type xác định hai điều:
Liệu bạn có thể thay đổi dữ liệu hay không (thêm / chỉnh sửa / xóa)
Làm thế nào những người dùng khác sẽ bị dừng chỉnh sửa bản ghi giống như bạn.
  • adLockReadOnly
Đây là mặc định. Nó có ít tác dụng nhất đối với người dùng khác và tốt hơn về tốc độ / bộ nhớ / sử dụng mạng.
Bạn không thể thêm / chỉnh sửa / xóa dữ liệu, bạn chỉ có thể đọc nó.
Bạn không chặn người dùng khác chỉnh sửa hồ sơ trong bảng.
  • adLockOptimistic
Bạn có thể thêm / chỉnh sửa / xóa dữ liệu.
Khi bạn chỉnh sửa một bản ghi, một người dùng khác có thể chỉnh sửa nó cùng một lúc - nhưng nếu cả hai bạn cố gắng ghi dữ liệu, một trong hai bạn sẽ gặp lỗi khi xảy ra .Update.
  • adLockPessimistic
Bạn có thể thêm / chỉnh sửa / xóa dữ liệu.
Khi bạn chỉnh sửa một bản ghi, nó sẽ bị chặn ngay lập tức khỏi những người dùng khác. Một lỗi sẽ xảy ra ngay khi bất kỳ giá trị nào bị thay đổi trong.

Dưới đây là ví dụ kết nối CSDL SQL lấy ra bảng dự liệu customer

Sub ADOBD_Connection_Sample()    Dim cnn As New ADODB.Connection    Dim rst As New ADODB.Recordset    Dim qry As String    cnn.Open = "Server=myServerAddress;Database=myDataBase;User Id=myUsername;Password=myPassword;"    qry = "SELECT * FROM Customers"    rst.Open qry, cnn, adOpenKeyset, adLockOptimistic    MsgBox rst.RecordCount    rst.Close    cnn.Close End Sub



Đăng nhận xét

[blogger][facebook]

Author Name

Biểu mẫu liên hệ

Tên

Email *

Thông báo *

Được tạo bởi Blogger.