8 Bước cơ bản để thiết lập một câu lệnh SQL trong Excel
Bước 1: Tạo đối tượng lấy dữ liệu
Để tiến hành truy cập vào nơi chứa dữ liệu thì đầu tiên ta phải tạo ra một phương thức kết nối với nơi chứa dữ liệu gọi là ADODB.Connection.
Dim Duy As ObjectSet Duy = CreateObject("ADODB.Connection")Lưu ý: "Duy" là tên đối tượng có thể thay đổi theo ý muốn.
Bước 2: Tạo túi chứa dữ liệu Sau khi đã tạo ta đối tượng lấy dữ liệu, tiếp theo ta tạo túi chứa dữ liệu tên "rst" với thuộc tính "Recordset"
Dim rst As ObjectSet rst = CreateObject("ADODB.Recordset")
Bước 3: Lấy đường dẫn
Dim duong_dan As Stringduong_dan = "C:\SQL\Database_SQL.xlsx"Lưu ý: C:\SQL\Database_SQL.xlsx là toàn bộ đường dẫn của file chứa dữ liệu cần lấy.
Bước 4: Mở đường dẫn đi vào nơi chứa dữ liệu
Duy.Open ("Provider = Microsoft.ACE.OLEDB.12.0;Data Source = " & duong_dan & ";Extended Properties = Excel 12.0")
Bước 5: Cho dữ liệu vào túi và lọc dữ liệu theo điều kiện của bạnỞ bước này, sẽ tiến hành thực hiện các câu lệnh như SELECT, GROUP BY,... để thực hiện hành động truy vấn dữ liệu theo yêu cầu của người dùng (Các câu lệnh sẽ được trình bày ở những bài viết sau).
rst.Open ("SELECT BatNbr,Crtd_User,DocType,InvcNbr FROM [APDoc$]"), Duy
Bước 6: Làm sạch dữ liệuTại vùng để trả kết quả ta cần phải xóa dữ liệu cũ tại vùng này đưa dữ liệu mới sau khi truy vấn vào.
Sheet2.Range("A1:V150000").ClearContentsChú thích:
- "Sheet2" là tên sheetcode tại file chúng ta đang thao tác lập trình.
- Range("A1:V150000") là vùng cần xóa và có thể thay đổi vùng này tùy vào nhu cầu dùng
- ClearContents là cú pháp xóa nội dung trong ô tính excel
Bước 7: Lấy tên các cột của dữ liệu từ túi dữ liệu "rst" Sau khi SELECT các cột ở bước 5, ta cần phải đưa các header của các cột vào vùng chứa dữ liệu. Cụ thể các header lần lượt ở đây sẽ là: BatNbr, Crtd_User, DocType, InvcNbr.
Dim i As Integer For i = 1 To rst.Fields.Count Sheet2.Cells(1, i).Value = rst.Fields(i - 1).Name NextChú thích:
- Dim i as Interger: khởi tạo biến i
- rst.Fields.Count: đếm số cột đã Select được ở bước 5 (cụ thể là có 5 cột => rst.Fields.Count = 5)
- Sheet2.Cells(1, i).Value = rst.Fields(i - 1).Name: tên từng cột được mang qua ô Cell(1,i)
- Ý nghĩa vòng lặp For - Next: Với mỗi biến "i" chạy từ 1-5 thì sẽ mang từng tên của cột tương ứng qua vùng chứa kết quả Bước 8: Sao chép các dữ liệu từ túi dữ liệu qua vùng chứa kết quả
Sheet2.Range("A2").CopyFromRecordset rst Chú thích:
- Sheet2 là sheet chứa kết quả
- Range("A2") là ô trả kết quả
Công ty TNHH ERX Việt Nam Newsletter
Join the newsletter to receive the latest updates in your inbox.