Trích lọc dữ liệu bằng câu lệnh truy vấn SQL (1 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

bongmaihung

Thành viên hoạt động
Tham gia
7/8/14
Bài viết
173
Được thích
39
Mã:
LsSQL = "SELECT TEN_HANG,DIEN_GIAI,SUM(XUAT) AS [SL XUAT],SUM(DOANH_THU) AS [DOANH_THU] FROM TIEN WHERE [TEN_HANG] ='" & Range("C2").Value & "' AND [DIEN_GIAI] = '" & Range("D2").Value & "' GROUP BY TEN_HANG,DIEN_GIAI"
Em có file dữ liệu đang cần trích lọc dữ liệu bằng SQL. Ở sheét 1, em có cơ sở dữ liệu. Ở trong sheet 2, em cần lọc theo 2 tiêu chí là Tên hàng (Dạ yến thảo đơn) và diễn giải (bầu). Hiện tại em chỉ lọc được đúng Tên hàng (Dạ yến thảo đơn) và diễn giải (bầu). Giờ em mong muốn là lọc được Tên hàng (Dạ yến thảo đơn) và diễn giải có bầu to, bầu nhỏ (giống toán tử like trong VBA) nhưng chưa biết cách. Em thảo khác bài của anh Hai Lúa thì thấy hình như dùng % nhưng em làm chưa được. Nhờ anh chị và các bạn giúp sửa lại câu lệnh trên cho phù hợp , hoặc giúp em viết lại code mới thì quá tốt. Em cảm ơn.
 

File đính kèm

Mã:
LsSQL = "SELECT TEN_HANG,DIEN_GIAI,SUM(XUAT) AS [SL XUAT],SUM(DOANH_THU) AS [DOANH_THU] FROM TIEN WHERE [TEN_HANG] ='" & Range("C2").Value & "' AND [DIEN_GIAI] = '" & Range("D2").Value & "' GROUP BY TEN_HANG,DIEN_GIAI"
Em có file dữ liệu đang cần trích lọc dữ liệu bằng SQL. Ở sheét 1, em có cơ sở dữ liệu. Ở trong sheet 2, em cần lọc theo 2 tiêu chí là Tên hàng (Dạ yến thảo đơn) và diễn giải (bầu). Hiện tại em chỉ lọc được đúng Tên hàng (Dạ yến thảo đơn) và diễn giải (bầu). Giờ em mong muốn là lọc được Tên hàng (Dạ yến thảo đơn) và diễn giải có bầu to, bầu nhỏ (giống toán tử like trong VBA) nhưng chưa biết cách. Em thảo khác bài của anh Hai Lúa thì thấy hình như dùng % nhưng em làm chưa được. Nhờ anh chị và các bạn giúp sửa lại câu lệnh trên cho phù hợp , hoặc giúp em viết lại code mới thì quá tốt. Em cảm ơn.

Bạn thử với code sau nhé:
Mã:
Sub Tong_xitin()  
Dim cn As Object, adoRS As Object
  Set cn = CreateObject("ADODB.Connection")
  cn.Open ("Provider=Microsoft.Jet.OLEDB.4.0;" & _
           "Data Source=" & ThisWorkbook.FullName & _
           ";Extended Properties=""Excel 8.0;HDR=Yes;"";")
  Set adoRS = cn.Execute("SELECT TEN_HANG,DIEN_GIAI,SUM(XUAT) AS [SL XUAT],SUM(DOANH_THU) AS [DOANH_THU] " & _
                        "FROM [Sheet1$] " & _
                        "WHERE [TEN_HANG] ='" & Sheets("Sheet2").Range("C3").Value & _
                                "' AND [DIEN_GIAI] like '" & Sheets("Sheet2").Range("D3").Value & _
                        "%' GROUP BY TEN_HANG,DIEN_GIAI")
  With Sheets("Sheet2")
    .Range("A7:D65000").ClearContents
    .Range("A7").CopyFromRecordset adoRS
    .Activate
  End With
  adoRS.Close: cn.Close
  Set cn = Nothing: Set adoRS = Nothing
  


End Sub
 
Upvote 0
Bạn thử với code sau nhé:
Mã:
Sub Tong_xitin()  
Dim cn As Object, adoRS As Object
  Set cn = CreateObject("ADODB.Connection")
  cn.Open ("Provider=Microsoft.Jet.OLEDB.4.0;" & _
           "Data Source=" & ThisWorkbook.FullName & _
           ";Extended Properties=""Excel 8.0;HDR=Yes;"";")
  Set adoRS = cn.Execute("SELECT TEN_HANG,DIEN_GIAI,SUM(XUAT) AS [SL XUAT],SUM(DOANH_THU) AS [DOANH_THU] " & _
                        "FROM [Sheet1$] " & _
                        "WHERE [TEN_HANG] ='" & Sheets("Sheet2").Range("C3").Value & _
                                "' AND [DIEN_GIAI] like '" & Sheets("Sheet2").Range("D3").Value & _
                        "%' GROUP BY TEN_HANG,DIEN_GIAI")
  With Sheets("Sheet2")
    .Range("A7:D65000").ClearContents
    .Range("A7").CopyFromRecordset adoRS
    .Activate
  End With
  adoRS.Close: cn.Close
  Set cn = Nothing: Set adoRS = Nothing
  


End Sub
Cảm ơn bạn rất nhiều, đã biết cách thêm % vào. Hay quá. Mình đã thử ok.
Cảm ơn bạn rất nhiều, đã biết cách thêm % vào. Hay quá. Mình đã thử ok.
 
Upvote 0
Nếu rãnh bạn qua chủ đề ADO căn bản và đố vui ADO để tham khảo thêm nhé.
Cảm ơn bạn nhé, file lúc đầu mình cũng giống bạn rồi nhưng ko hiểu sao ko ra. Test file giả lập thì ok hết. Mình copy code của bạn vào file thật chưa được (chỉ ra được 1 trường hợp bầu như ban đầu của mình, file test thì ok hết nhé. Lạ quá). Mình đang kiểm tra thật kỹ file thật xem tại sao vậy. Chắc do file thôi, code mình nghĩ không vấn đề gì cả
 
Upvote 0
Có thể định nghĩa thành fuction
 
Upvote 0
Cho em hỏi,nếu sử dụng câu lệnh SQL như trên phải chạy sub, có cách nào tạo thành function như của bác Tuân cho thuận tiện,
 
Lần chỉnh sửa cuối:
Upvote 0
Thì chuyển thành hàm như của anh Tuân, sẽ thuận tiện hơn muốn gọi lúc nào cũng được.
 
Upvote 0
Web KT

Bài viết mới nhất

Back
Top Bottom