Trong VBA Access, ADODB (ActiveX Data Objects for Database) là một thư viện cho phép bạn kết nối và thao tác với các cơ sở dữ liệu ngoài Microsoft Access, chẳng hạn như SQL Server, Oracle, hoặc OLE DB. ADODB cung cấp các đối tượng như Connection, Recordset, và Command để truy cập và thao tác với dữ liệu.
Kết nối với các cơ sở dữ liệu ngoài Access: Bạn có thể sử dụng ADODB để kết nối với cơ sở dữ liệu như SQL Server, Oracle, hoặc bất kỳ hệ quản trị cơ sở dữ liệu nào hỗ trợ OLE DB hoặc ODBC.
Quản lý kết nối linh hoạt: Bạn có thể mở kết nối, thực thi các câu lệnh SQL, và lấy dữ liệu từ cơ sở dữ liệu ngoài Access.
Thực hiện các thao tác phức tạp: Bạn có thể sử dụng ADODB để thực hiện các câu lệnh SQL phức tạp hoặc truy vấn dữ liệu từ các cơ sở dữ liệu khác.
Connection: Dùng để kết nối với cơ sở dữ liệu.
Recordset: Dùng để lưu trữ kết quả của một truy vấn SQL.
Command: Dùng để thực thi các câu lệnh SQL (SELECT, INSERT, UPDATE, DELETE).
Kết nối tới cơ sở dữ liệu với Connection: Bạn cần khai báo một đối tượng ADODB.Connection để kết nối tới cơ sở dữ liệu.
Truy vấn dữ liệu với Recordset: Sau khi kết nối thành công, bạn có thể sử dụng đối tượng Recordset để thực hiện các truy vấn và nhận dữ liệu từ cơ sở dữ liệu.
Giả sử bạn muốn kết nối tới một cơ sở dữ liệu SQL Server và truy vấn dữ liệu từ một bảng.
Để sử dụng ADODB trong VBA Access, bạn cần thêm tham chiếu tới thư viện Microsoft ActiveX Data Objects Library:
Mở VBA Editor (nhấn Alt + F11).
Vào Tools > References.
Tìm và đánh dấu Microsoft ActiveX Data Objects x.x Library (x.x là phiên bản).
Ví dụ kết nối với file Excel
Dim conn As ADODB.Connection
Dim rs As ADODB.Recordset
Dim sql As String
Dim connStr As String
' Chuoi ket noi Excel
connStr = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=D:\Vidu\dulieu.xlsx;Extended Properties=""Excel 12.0;HDR=YES;"""
' Tao doi tuong ket noi
Set conn = New ADODB.Connection
conn.Open connStr
' Cau lenh SQL
sql = "SELECT * FROM [Sheet1$]"
' Tao bien Recordset
Set rs = New ADODB.Recordset
rs.Open sql, conn
' Kiem tra du lieu neu co trong rs
If Not rs.EOF Then
rs.MoveFirst
' Duyet qua cot
Do While Not rs.EOF
MsgBox "Ma: " & rs!TT & vbCrLf & _
"Ten: " & rs!Ten & vbCrLf & _
"Lop: " & rs!Lop
rs.MoveNext
Loop
Else
MsgBox "Khong co du lieu trong Excel !"
End If
' Ðóng Recordset và Connection
rs.Close
conn.Close
' Giai phong bo nho
Set rs = Nothing
Set conn = Nothing
Dim conn As ADODB.Connection
Dim rs As ADODB.Recordset
Dim sql As String
Dim connStr As String
' Khai báo kết nối (dùng chuỗi kết nối cho SQL Server)
connStr = "Provider=SQLOLEDB;Data Source=server_name;Initial Catalog=database_name;User ID=user;Password=password"
' Tạo đối tượng Connection và mở kết nối
Set conn = New ADODB.Connection
conn.Open connStr
' Câu lệnh SQL để truy vấn dữ liệu
sql = "SELECT * FROM Employees"
' Tạo đối tượng Recordset và thực thi truy vấn
Set rs = New ADODB.Recordset
rs.Open sql, conn
' Hiển thị kết quả trong MsgBox (lấy 1 bản ghi đầu tiên)
If Not rs.EOF Then
MsgBox "Tên nhân viên: " & rs.Fields("EmployeeName").Value
End If
' Đóng Recordset và Connection
rs.Close
conn.Close
' Giải phóng bộ nhớ
Set rs = Nothing
Set conn = Nothing
Thực thi câu lệnh SELECT: Dùng Recordset để lấy dữ liệu từ cơ sở dữ liệu.
Thực thi câu lệnh INSERT, UPDATE, DELETE: Dùng Connection để thực thi các câu lệnh này mà không cần sử dụng Recordset.
Ví dụ về INSERT, UPDATE, DELETE
Dim conn As ADODB.Connection
Dim sql As String
' Chuỗi kết nối tới cơ sở dữ liệu
connStr = "Provider=SQLOLEDB;Data Source=server_name;Initial Catalog=database_name;User ID=user;Password=password"
' Mở kết nối
Set conn = New ADODB.Connection
conn.Open connStr
' Câu lệnh SQL để thêm dữ liệu vào bảng
sql = "INSERT INTO Employees (EmployeeName, Age) VALUES ('John Doe', 30)"
' Thực thi câu lệnh INSERT
conn.Execute sql
' Đóng kết nối
conn.Close
' Giải phóng bộ nhớ
Set conn = Nothing
Connection:
Open: Mở kết nối đến cơ sở dữ liệu.
Close: Đóng kết nối.
Execute: Thực thi câu lệnh SQL (SELECT, INSERT, UPDATE, DELETE).
Recordset:
Open: Mở một truy vấn SQL và trả về dữ liệu dưới dạng Recordset.
Fields: Thuộc tính để truy cập các trường dữ liệu trong một bản ghi.
EOF (End Of File): Kiểm tra xem có dữ liệu không (kết thúc Recordset).
ADODB trong VBA Access giúp kết nối và làm việc với cơ sở dữ liệu ngoài Access, như SQL Server, Oracle, và các nguồn dữ liệu OLE DB khác.
ADODB linh hoạt và mạnh mẽ, hỗ trợ thực thi các câu lệnh SQL và quản lý kết nối với cơ sở dữ liệu ngoài Microsoft Access.
Thường được sử dụng khi bạn cần truy xuất và thao tác với dữ liệu trong các cơ sở dữ liệu ngoài Access hoặc kết nối từ ứng dụng Access đến các hệ quản trị cơ sở dữ liệu khác.
Tìm kiếm:
Thư viên ADODB trong VBA Access mang lại hiệu quả lớn khi các bạn nâng cấp ứng dụng lên mạng internet / lan.