Giahao2006
Thành viên mới

- Tham gia
- 31/7/20
- Bài viết
- 32
- Được thích
- 14
- Giới tính
- Nam
Bài này mà viết SQL thì sặc gạch luôn.Cứ phải là SQL mới được à
Thế không biết mới hỏi mà.Mà có đòi hỏi nhiều gì đâu anh.Chỉ là làm bằng SQL thôi à.Bài này mà viết SQL thì sặc gạch luôn.
Thứ nhất, SQL không chuyên để subtotals, các phiên bản lớn (Oracle, T-SQL,...) phải dùng Rollup. Riêng Access thì phải dùng Union với dòng Sum, khá phức tạp.
Thứ hai, sắp xếp để cho "Tôm" đứng trước "Gà" cần tạo trường phụ.
Túm lại, thớt đòi hỏi hơi nhiều so với khả năng hiểu biết của mình.
Dạ, chứ mấy cái record hay là viết code cơ bản để ra được giống vậy thì mình làm được rồi ạ, tại mình thấy SQL truy suất dữ liệu nhanh, nên mới nhờ mọi người giúp đỡ, sẵn học hỏi thêm ạ,Cứ phải là SQL mới được à
Bạn không hiểu lời của tôi: "...nhiều so với hiểu biết của mình"Thế không biết mới hỏi mà.Mà có đòi hỏi nhiều gì đâu anh.Chỉ là làm bằng SQL thôi à.
Thực ra em biết anh nói cái gì.Chắc chủ thớt chỉ muốn là code nó chạy nhanh hơn thôi.Chứ không biết về SQL.Còn nếu bài của chủ thớt cho vào mảng duyệt nó cũng nhanh thôi.Chắc chỉ thua kém về % giây tốc độ.Nên có thể bỏ qua.Bạn không hiểu lời của tôi: "...nhiều so với hiểu biết của mình"
Nếu thớt tự viết được phần SQL truy xuất chi tiết, và phần SQL truy xuất theo nhóm (tên và danh mục). Tôi sẽ chỉ cho cách nhập chúng lại để ra kết quả.
Khong viết được hai phần đó thì đòi hỏi SQL chỉ là đua đòi.
Làm cách nào để sắp xếp "tôm" trước "gà" chỉ cần kỹ xảo nhỏ
Nói túm lại, những đòi hỏi của bài không phải là căn bản SQL. Thớt bảo rằng "mình thấy SQL truy suất dữ liệu nhanh" là nói về cái mà chính mình hoàn toàn mù tịt.
Thêm sheet DanhMuc như sau:Xin Chào Anh/Chị/ Em ạ, mình có một file hoặc hình bên dưới, kính nhờ Anh/Chị làm giúp ra kết quả giúp như phía dưới với ạ, Dạ, cảm ơn Anh / Chị nhiều ạ.
View attachment 281121
Sub GomNhom_HLMT()
Dim strSQL As String, strSQL1 As String
strSQL = "Select b.ThuTu,a.DVB,[DANH MUC],DVT,[SL] From [Sheet2$] a Inner Join [DanhMuc$] b On a.DVB=b.DVB "
strSQL1 = strSQL & " UNION ALL SELECT THUTU & ' Total','','','',SUM([SL]) AS SOLUONG FROM (" & strSQL & ") GROUP BY THUTU"
With CreateObject("ADODB.Recordset")
.Open ("SELECT DVB, [DANH MUC],DVT,[SL] FROM(" & strSQL1 & ") ORDER BY THUTU, [DANH MUC] DESC"), "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & ThisWorkbook.FullName & ";Extended Properties=Excel 12.0 Xml;"
Sheet2.Range("L2").CopyFromRecordset .DataSource
End With
End Sub
Dạ, cảm ơn Anh Hai Lúa Miền Tây nhiều ạThêm sheet DanhMuc như sau:
View attachment 281126
Rồi chạy thử code sau nhé:
Mã:Sub GomNhom_HLMT() Dim strSQL As String, strSQL1 As String strSQL = "Select b.ThuTu,a.DVB,[DANH MUC],DVT,[SL] From [Sheet2$] a Inner Join [DanhMuc$] b On a.DVB=b.DVB " strSQL1 = strSQL & " UNION ALL SELECT THUTU & ' Total','','','',SUM([SL]) AS SOLUONG FROM (" & strSQL & ") GROUP BY THUTU" With CreateObject("ADODB.Recordset") .Open ("SELECT DVB, [DANH MUC],DVT,[SL] FROM(" & strSQL1 & ") ORDER BY THUTU, [DANH MUC] DESC"), "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & ThisWorkbook.FullName & ";Extended Properties=Excel 12.0 Xml;" Sheet2.Range("L2").CopyFromRecordset .DataSource End With End Sub
Bạn làm sao theo kịp đầu óc đi trước thời đại 100 năm.Chủ thớt nhờ xong mà được còn nhờ tiếp cái gì nữa không? Thấy lắt nhắt dữ. Đã hỏi dùng SQL thì tốt nhất là dữ liệu SQL SV chứ không nên dùng Excel làm CSDL nữa.
Nên chờ "Code đơn giản" của thớt. Có lẽ sắp ra rồi.Trong khi chờ giải pháp của Hai Lúa Miền Tây,
...
Xin Chào Anh/Chị/ Em ạ, mình có một file hoặc hình bên dưới, kính nhờ Anh/Chị làm giúp ra kết quả giúp như phía dưới với ạ, Dạ, cảm ơn Anh / Chị nhiều ạ.
View attachment 281121