Giúp kiểm tra -Sử dụng select sql để lấy tổng hợp dữ liệu từ file đóng

Liên hệ QC

syquan

Thành viên mới
Tham gia
4/4/07
Bài viết
35
Được thích
2
Chào cả nhà!
Mình sử dụng code select sql của thầy Ndu để tổng hợp dữ liệu từ các file con RF1.xlsx, RF2.xlsx, RF176.xlsx.... vào file tonghop - BK.xlsm
Code chạy ok nhưng dữ liệu thì ko như ý.
1537261416857.png
Trong file tonghop.xlsm có sheet ddfile để lấy đường dẫn file con cần tổng hợp, sheet Tonghop để tổng hợp các file con có đường dẫn trên sheet ddfile.
Cả nhà có thể giúp sửa code để có thế lấy được toàn vẹn dữ liệu không ah. Trường hợp này em nghĩ là do file con có vấn đề.
Vui lòng tải về file kèm.
Xin cảm ơn!
 

File đính kèm

  • test sql.rar
    766.2 KB · Đọc: 40
Chào cả nhà!
Mình sử dụng code select sql của thầy Ndu để tổng hợp dữ liệu từ các file con RF1.xlsx, RF2.xlsx, RF176.xlsx.... vào file tonghop - BK.xlsm
Code chạy ok nhưng dữ liệu thì ko như ý.
View attachment 204111
Trong file tonghop.xlsm có sheet ddfile để lấy đường dẫn file con cần tổng hợp, sheet Tonghop để tổng hợp các file con có đường dẫn trên sheet ddfile.
Cả nhà có thể giúp sửa code để có thế lấy được toàn vẹn dữ liệu không ah. Trường hợp này em nghĩ là do file con có vấn đề.
Vui lòng tải về file kèm.
Xin cảm ơn!
Tham khảo bài viết ở Link sau:
https://www.giaiphapexcel.com/diendan/threads/gộp-nhiều-file-con-thành-một-file-tổng.133731/

https://www.giaiphapexcel.com/diendan/threads/tổng-hợp-dữ-liệu-từ-nhiều-file-tsv-hoặc-excel-thành-1-file-theo-trình-tự.132853/

https://www.giaiphapexcel.com/diendan/threads/lấy-dữ-liệu-từ-nhiều-file-không-cần-mở-file.131812/

https://www.giaiphapexcel.com/diendan/threads/tổng-hợi-dữ-liệu-từ-nhiều-file-excel.128768/

https://www.giaiphapexcel.com/diendan/threads/nhờ-giúp-macro-tổng-hợp-dữ-liệu-từ-nhiều-file.127932/

https://www.giaiphapexcel.com/diendan/threads/vba-gộp-sheet-từ-nhiều-file-vào-1-file.126102/
 
Lần chỉnh sửa cuối:
Em đã làm thành công bằng cách mở file lần lượt file rồi copy sau đó đóng lại thì dữ liệu ok nhưng khi phải xử lý khoảng 2500 file thì mất khoảng gần 2 giờ đồng hồ. trong khi sử dụng hàm getdata của thầy Ndu thì chỉ mất khoảng 10 phút nhưng dữ liệu khi sử dụng câu lệnh select sql lại bị như hình trên. Xin hỏi có cách nào xử lý được không ah.
Để tránh đọc thiếu dữ liệu như trường hợp của bạn thì bạn sử dụng thêm IMEX = 1. Nếu bạn không cho tham số này thì nó sẽ lấy kiểu dữ liệu theo 8 dòng đầu, với cột C của bạn thì 3 dòng đầu là text, 5 dòng sau là số nên ADO sẽ hiểu cột C của bạn là cột số và chỉ lấy giá trị số, nên 3 dòng dữ liệu của bạn sẽ trống
HDR=No;IMEX=1"";"
 
Lần chỉnh sửa cuối:
Em đã làm thành công bằng cách mở file lần lượt file rồi copy sau đó đóng lại thì dữ liệu ok nhưng khi phải xử lý khoảng 2500 file thì mất khoảng gần 2 giờ đồng hồ. trong khi sử dụng hàm getdata của thầy Ndu thì chỉ mất khoảng 10 phút nhưng dữ liệu khi sử dụng câu lệnh select sql lại bị như hình trên. Xin hỏi có cách nào xử lý được không ah.
2 giờ = 7200 giây. Cho 2500 files, là dưới 3 giây mỗi file. Gồm chọn file, mở ra, copy, paste, đóng lại.
10 phút = 600 giây. Là dưới 1/4 giây mỗi file. Gồm kết nối, truy vấn (ADO dò dữ liệu, đọc, và nhét vào recordset), sau đó trút recordset vào sheet.
Phải nói là cách nào cũng toàn là hàng khủng.
 
Đánh vật với đám code xong rút ra 1 điều là phạm vi dữ liệu truy vấn được giới hạn càng chính xác thì kết quả query sẽ đúng hơn.
Cho quá phạm vi thì anh Ado cũng trả về những cái quá phạm vi (thường là oánh 0) hoặc khuyết dữ liệu như bạn đề cập. Còn nếu cho phạm vi không phủ hết bảng dữ liệu thì nó cũng trả về kết quả thiếu.

Cụ thể nếu tôi query trong phạm vi B6:R11 thì dữ liệu đủ, còn nhiều hơn 11 thì khuyết như bạn gặp. Còn tại sao thì bó tay!?

Hy vọng nguyên nhân chỉ có bấy nhiêu
 
Lần chỉnh sửa cuối:
Đánh vật với đám code xong rút ra 1 điều là phạm vi dữ liệu truy vấn được giới hạn càng chính xác thì kết quả query sẽ đúng hơn.
Cho quá phạm vi thì anh Ado cũng trả về những cái quá phạm vi (thường là oánh 0) hoặc khuyết dữ liệu như bạn đề cập. Còn nếu cho phạm vi không phủ hết bảng dữ liệu thì nó cũng trả về kết quả thiếu.

Cụ thể nếu tôi query trong phạm vi B6:R11 thì dữ liệu đủ, còn nhiều hơn 11 thì khuyết như bạn gặp. Còn tại sao thì bó tay!?

Hy vọng nguyên nhân chỉ có bấy nhiêu
Dùng cách mở ra và copy dữ liệu rất ok. Đã test tới hơn 7000 file. nhưng phải đợi thời gian dài dài.
Bài đã được tự động gộp:

Để tránh đọc thiếu dữ liệu như trường hợp của bạn thì bạn sử dụng thêm IMEX = 1. Nếu bạn không cho tham số này thì nó sẽ lấy kiểu dữ liệu theo 8 dòng đầu, với cột C của bạn thì 3 dòng đầu là text, 5 dòng sau là số nên ADO sẽ hiểu cột C của bạn là cột số và chỉ lấy giá trị số, nên 3 dòng dữ liệu của bạn sẽ trống
HDR=No;IMEX=1"";"
Bạn viết rõ dòng này tích hợp vào câu lệnh sql dùm. Mình đọc ko hiểu nên điền vào chỗ nào trong câu lệnh.
Cảm ơn nhiều!
 

File đính kèm

  • test sql va copy.rar
    856.3 KB · Đọc: 40
Dùng cách mở ra và copy dữ liệu rất ok. Đã test tới hơn 7000 file. nhưng phải đợi thời gian dài dài.
Bài đã được tự động gộp:


Bạn viết rõ dòng này tích hợp vào câu lệnh sql dùm. Mình đọc ko hiểu nên điền vào chỗ nào trong câu lệnh.
Cảm ơn nhiều!
Mình đã làm như bạn kết qua ok.
 
Web KT
Back
Top Bottom