8 Bước cơ bản để thiết lập một câu lệnh SQL trong Excel

Hoang Trung

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ả