Một số thao tác kỹ thuật cơ bản khi viết câu lệnh truy vấn SQL trong Excel
Tổng hợp các thao tác kỹ thuật quan trọng khi viết câu lệnh SQL trong Excel VBA: cách nối chuỗi câu truy vấn dài trên nhiều dòng bằng ký tự gạch dưới (_), truyền biến động từ ô Excel và xử lý ngày tháng/chuỗi.
.png)
1.Cắt chuỗi – Xuống dòng
Cắt chuỗi và xuống dòng là 2 thao tác cơ bản, đươc ứng dụng nhiều trong SQL. Dùng để hiển thị code một cách dễ nhìn, bên cạnh đó còn được ứng dụng để tham chiếu và một số vấn đề khác.
Cắt chuỗi: Tương tự như Excel cát chuỗi giúp chúng ta chia văn bản ban đầu thanh nhiều văn bản nhỏ hơn.
Quy tắc cắt chuỗi: ta sẽ dùng “ & “
Ví dụ: “ERX VN” -> “ERX“ & “VN”
Xuống dòng: Là một thao tác cần thiết dành cho nhữn dòng code quá dài, quá phức tạp, bằng cách xuống dòng ta có thể chia dòng code ra thành nhiều dòng, nhiều ý nhỏ.
Quy tắc xuống dòng:
· Vị trí xuống dòng không nằm trong dấu ngoặc kép
Khi vị trí muốn xuống dòng không nằm trong dấu ngoặc kép ta sử dụng dấu cách sau đó là dấu gạch dưới và enter xuống dòng.
Ví dụ: Sheet1.Range("A6:E150000").ClearContents
Sheet1.Range("A6:E150000"). _
ClearContents
· Vị trí xuống dòng nằm trong dấu ngoặc kép
Khi vị trí xuống dòng nằm trong dấu ngoặc kép ta kết hợp “ & “ và khoảng trắng, dấu gạch dưới và xuống dòngVí dụ: Sheet1.Range("A6:E150000").ClearContents
Sheet1.Range("A6:” _ &
“E150000").ClearContents
2.Tạo nút lệnh VBA
Tạo nút lệnh là một công cụ hữu ích giúp bạn thực thi code ngay trên bảng tính Excel mà không cần trúy cập vào môi trường lập trình.
Để tạo một nút lệnh, cách cơ bản nhất các bạn có thể vào tag Insert -> Shape. Sau đó các bạn chọn một hình các bạn muốn và vẽ ra excel.
Sau khi đã có hình dạng của nút trong excel các bạn có thể tùy chỉnh tên, màu,…
Tiếp đó các bạn sẽ chuột phải vào nút và chọng assign macro
Khi cửa sổ assign macro hiện ra các bạn chọn sub muốn gán nút và nhấn ok.
Sau khi hoàn thành các bạn đã có thể chạy code bằng cách nhấn vào nút mới tạo trên excel
3. Tham chiếu cell/range
Tham chiếu cell/range là một phương pháp được dùng rất nhiều, nó có thể giúp bạn truyền điều kiện, giá trị của các biến/hàm ngay trên excel. Như vậy bạn có thể tùy ý them, xóa, sửa điều kiện hoặc giá trị một cách nhanh chóng.
Cú pháp tham chiếu đến 1 cell:
Ví dụ ô B2 trên sheet 1
sheet1.[B2]
sheet1.range(“B2”)
sheet1.cells(2,2)
Nếu viết code tại sheet1 thì có thể không cần chỉ định sheet1.[B2] mà chỉ cần ghi đơn
giản là [B2]
Chèn vào câu lệnh SQL: (lấy ô B2/B3 của sheet 1 làm ví dụ)
Number data:
“...WHERE lastcost = ” & [B2] & “...”
String data:
“...WHERE invtID LIKE ‘” & [B2] & “’...”
Date data
“...WHERE POdate BETWEEN #” & format([B2],”yyyy-mm-dd”) & “# AND #” &
format([B3],”yyyy-mm-dd”) & “#...”
4.Tạo câu truy vấn nhanh
Chức năng: tối giản hóa việc viết câu truy vấn SQL (chỉ tập trung vào câu lệnh mà không cần thiết lập lại các connection/connection string/recordset/xóa kết quả truy vấn cũ/vị trí trả kết quả truy vấn mới) VBA:
Phân biệt Sub không tham số và Sub có tham số
Cách truyền tham số vào Sub
CurentRegion
Hàm Offset
SQL:
Connection.open/close
Recordset.open/close
Cú pháp:
Sub lay_ket_qua (Cau_truy_van as String, Vi_tri_tra_ket_qua as Range)
…..
Rst.open (Cau_truy_van), cn
End Sub
Sub Thu_tuc_1 ()
Call lay_ket_qua (“SELECT…. FROM….WHERE….”, Sheet1.[A5])
End sub.
Trên đây là một số thao tác cơ bản được ứng dụng nhiều trong SQL. Chúc các bạn có thể ứng dụng thành công
Mẹo Tối ưu Truy vấn SQL trong Excel VBA & Xử lý Lỗi Thường gặp
Khi triển khai câu lệnh truy vấn SQL thông qua kết nối ADODB.Connection trên nền tảng Microsoft Excel, bạn cần lưu ý 3 quy tắc vàng sau để đảm bảo tốc độ và độ chính xác tuyệt đối:
'' Chuỗi kết nối chuẩn hỗ trợ cả cột trộn kiểu dữ liệu Số và Văn bản (IMEX=1):
cn.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & filePath & _
";Extended Properties=""Excel 12.0 Xml;HDR=YES;IMEX=1"";"
'' Quy tắc bọc tên Sheet và tên Cột có khoảng trắng hoặc tiếng Việt:
strSQL = "SELECT [Mã Hàng], [Tên Sản Phẩm], SUM([Thành Tiền]) AS TongTien " & _
"FROM [Data_BanHang$A1:G50000] " & _
"WHERE [Thành Tiền] IS NOT NULL " & _
"GROUP BY [Mã Hàng], [Tên Sản Phẩm]"
- Luôn thêm tham số
IMEX=1: Giúp trình điều khiển OLEDB không tự ý biến các mã hàng vừa có số vừa có chữ thành giá trịNull. - Giới hạn vùng dữ liệu khi Sheet có định dạng thừa: Thay vì gọi
[Sheet1$], bạn có thể chỉ định rõ[Sheet1$A1:Z50000]để bỏ qua các dòng rác cuối bảng. - Đóng kết nối sau khi
CopyFromRecordset: Luôn gọirs.Closevàcn.Closeđể giải phóng bộ nhớ RAM và tránh khóa file nguồn.
Bài viết liên quan
Thông báo
© 2021 CÔNG TY TNHH ERX VIỆT NAM
Địa chỉ văn phòng: 46/4 Nguyễn Cửu Vân, Phường 17, Quận Bình Thạnh, TP.HCM
share
tweet