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 Object
Set 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ệu
Tạ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 IntegerFor i = 1 To rst.Fields.CountSheet2.Cells(1, i).Value = rst.Fields(i - 1).NameNext
Chú 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 rstChú thích:
- Sheet2 là sheet chứa kết quả
- Range("A2") là ô trả kết quả
phương duy
Bài viết liên quan
Liên hệ
TIN NỔI BẬT
Không tìm thấy dữ liệu