Code VBA thực hiện SQL tự động trong Excel

Chia sẻ bởi:hands
★★★★★
Quảng cáo

Kính gửi Anh chị,
Em có Code SQL từ Serve như dưới đây. Giờ em muốn không vào SQL mà khi mở File Excel ra thì số liệu tự động cập nhật từ Sever khi em thay đổi BR_CODE = 'HN10169' and DATE = '20191130' and SEGMENT = 'KHCN'. Giả sử A1, B1, C1 lần lượt là các mã BR_CODE, DATE, SEGMENT và khi thay đổi giá trị tại các ô này File excel tự động cập nhật số (Vùng đổ dữ liệu từ A2). Code VBA nào làm được việc này ạ. Các anh chị giúp em với ạ.

SELECT CHUONG_TRINH, COUNT(DISTINCT CUS_ID) AS "SoLuongKH", SUM(AMT/1000000000) As "DUNO" FROM
Where BR_CODE = 'HN10169' and DATE = '20191130' and SEGMENT = 'KHCN'
GROUP BY CHUONG_TRINH
Order by "DUNO" Desc

Chắc là từ server SQL
Vậy đã vào được Server SQL, tốt nhất là lập Stored Procedure cho SQL xuất theo tham số, (có thể tạo thành View)
Rồi xuất ra Excel, hoặc từ Excel lấy dữ liệu đã trích xuất đó ra (thông qua ADO với VBA)
Bạn đang dùng Microsoft Query trên Excel hay viết truy vấn thông qua ADODB?

Em nghĩ là viết truy vấn thông qua ADODB ạ ? Có giúp được em không ạ. Túm lại em muốn điền BR_CODE = 'HN10169' and DATE = '20191130' and SEGMENT = 'KHCN' trên File excel và bấm cái nút thì nó tự cập nhật từ SERV vào mà không cần phải thao tác trên Serve ạ

Gửi file mẫu của bạn lên đây mình viết điều kiện cho
ví dụ mã BR_CODE = 'HN10169' được đặt ở sheet1 ô A1 thì mình viết là "WHERE BR_CODE = '" & sheet1.range("A1").value & "' AND DATE = " ……

Đây bạn nhé. Giả sử File Excel như vầy. Và lấy dữ liệu từ thì viết VBA như thế nào ạ

SqlString = "SELECT CHUONG_TRINH, COUNT(DISTINCT CUS_ID) AS 'SoLuongKH', SUM(AMT/1000000000) As 'DUNO' FROM " & _
" WHERE BR_CODE = '" & sheet1.range("B2").value & "' and DATE = '" & application.text(sheet1.range("B3"), "yyyymmdd") & _
"' and SEGMENT = '" & sheet1.range("B4").value & "'" & _
" GROUP BY CHUONG_TRINH" & _
" Order by SUM(AMT) Desc"

Tức là viết VBA như này à bạn

Sub SQL ()
dim SqlString as String
SqlString = "SELECT CHUONG_TRINH, COUNT(DISTINCT CUS_ID) AS 'SoLuongKH', SUM(AMT/1000000000) As 'DUNO' FROM [VV_WH]" & _
                 "  WHERE BR_CODE =[B] '[/B]" &[B] sheet1.range("B2").value [/B]& "[B]' [/B]and DATE[B] = '[/B]"[B] & application.text(sheet1.range("B3"), "yyyymmdd") [/B]& _
[B]                             "'[/B] and SEGMENT [B]= '[/B]" &[B] sheet1.range("B4").value [/B]& "[B]'[/B]" & _
                 " GROUP BY CHUONG_TRINH" & _
                 " Order by SUM(AMT) Desc"
End Sub

Đây là chuỗi truy vấn gửi đi thôi, còn phải có driver, username, password của server nữa.

Khó quá bạn nhỉ. Thế thủ tục đó làm sao bạn ?

Cụ thể phải biết được là xài SQL server hay access hay oracle. Mà hiện tại bạn có kết nối được vào server và query về được excel không?

SQL server bạn à. trên Excel mình có thể thêm 2 ô là User và Passw. Làm sao để khi bấm nút nó tự UPload dữ liệu vào Excel ấy bạn

Bạn gửi file gốc qua cho mình, có thể xóa user với pass đi cũng được, mình xem chuỗi kết nối mới viết lại được.

www.giaiphapexcel.com/diendan/threads/code-vba-th%E1%BB%B1c-hi%E1%BB%87n-sql-t%E1%BB%B1-%C4%91%E1%BB%99ng-trong-excel.147000/

Khóa học Power PI – Ứng dung trong Nhân sự
Khóa học SprinGO phù hợp

Khóa học Power PI – Ứng dung trong Nhân sự

TỔNG QUAN KHÓA HỌC: POWER BI CHO NGÀNH NHÂN SỰ Khóa học Power BI cho Nhân sự được thiết kế dành riêng cho các...

Xem khóa học
★★★★★ 5 ★ 1 👤 2 ▥ 0
Quảng cáo

Bạn nên đọc

2 Responses

  1. hands says:

    Lúc trước tôi có làm demo cho một bạn trên đây về việc kết nối và lấy dữ liệu từ SQL Server dạng cơ bản. Bạn có thể tham khảo file này rồi tuỳ biến cho mình.
    Nói trước đây chỉ là truyền câu lệnh SQL đơn giản lên cho Server rồi lấy dữ liệu chứ không gọi stored procedure để lấy dữ liệu nhé và cũng không dùng các kỹ thuật trong câu lệnh để tránh SQL injection nhé.
    – Bạn download CSDL mẫu Northwind cho SQL server để test (trang microsoft).
    – Trên form có tuỳ chọn "chọn kết nối mặc định": bạn thiết lập sẳn các tham số trong code vba nhé.

    File đính kèm bên dứoi.

    [url=gifyu.com/image/mjkb]s5.gifyu.com/images/KetNoiSQLSv.gif

  2. hands says:

    Mạnh mới thử chạy ok đó …. mọi cái Mạnh gần như biết hết nhưng còn dòng màu đỏ nếu rảnh chỉ dùm chút … chi tiết càng tốt
    Xin cảm ơn

    🙂 Cái đó có gì đâu bác. Trong file demo tôi dùng SQL Server database mẫu của Microsoft có tên là Northwind thôi. Bác vô trang này download nó về cài lên SQL Sv để test.
    Link: github.com/microsoft/sql-server-samples/tree/master/samples/databases
    2582

    Chắc nó giống cái này ạ 1 function vba kết nối đến nhiều dữ liệu.
    hspZB4Mx3rU
    [url=www.youtube.com/watch?v=hspZB4Mx3rU]Liên kết: http://www.youtube.com/watch?v=hspZB4Mx3rU

Leave a Reply

Your email address will not be published. Required fields are marked *

Quảng cáo

Cũ vẫn chất

Xem thêm