Bài tập về ADO căn bản.

Liên hệ QC
Cho mình hỏi dùng câu lệnh nào (hàm nào) để lọc ra các dòng có giá trị của 1 cột bị trùng.
Ví dụ mình có dử liệu gồm 3 cột A, B, C mình muốn lọc ra các dòng có cột A xuất hiện từ 2 lần trở lên.
(Mình tìm mãi mà chưa tìm ra được cách giải quyết bằng câu lệnh SQL)
Mình cám ơn!

Bạn thử như sau:
select A, count(A) from tablename group by A Having count(A)>2
 
Cho mình hỏi dùng câu lệnh nào (hàm nào) để lọc ra các dòng có giá trị của 1 cột bị trùng.
Ví dụ mình có dử liệu gồm 3 cột A, B, C mình muốn lọc ra các dòng có cột A xuất hiện từ 2 lần trở lên.
(Mình tìm mãi mà chưa tìm ra được cách giải quyết bằng câu lệnh SQL)
Mình cám ơn!

Bạn muốn lọc lấy cái gì?
Nếu chỉ muốn biết những dữ liệu A nào bị lặp lại thì dùng code bài #341 (hình như cần phải sửa >2 thành >1 hoặc >=2).
Nếu muốn lấy những dữ liệu khác trong dòng thì phải nói rõ hơn.
 
Bạn muốn lọc lấy cái gì?
Nếu chỉ muốn biết những dữ liệu A nào bị lặp lại thì dùng code bài #341 (hình như cần phải sửa >2 thành >1 hoặc >=2).
Nếu muốn lấy những dữ liệu khác trong dòng thì phải nói rõ hơn.
Cám ơn bác!
Mình muốn lọc ra các dòng có cột A bị lặp lại và lấy cả A, B, C luôn nhưng không muốn hiện COUNT(A) thì làm như thế nào?
Dạng như thế này:
select A, B, C from tablename group by A Having count(A)>1
 
Lần chỉnh sửa cuối:
Cám ơn bác!
Mình muốn lọc ra các dòng có cột A bị lặp lại và lấy cả A, B, C luôn nhưng không muốn hiện COUNT(A) thì làm như thế nào?
Dạng như thế này:
select A, B, C from tablename group by A Having count(A)>1
Có 2 vấn đề cần làm rõ:
- Lấy duy nhất 3 điều kiện A,B,C
Ví dụ:

ABC
asc
asc
ade
aaq
dds

Kết quả:

ABC
asc


- Chỉ lấy duy nhất cột A, loại bỏ điều kiện B,C
Ví dụ:

ABC
aaa
abc
bac
aaa
bac
csa

Kết quả:

ABC
aaa
bac
 
Cám ơn bác!
Là cái cuối đấy ạ, chỉ lấy điều kiện côt A bị lạp lại. Cột B, C không quan tâm.
 
Lần chỉnh sửa cuối:
Cám ơn bác!
Là cái cuối đấy ạ, chỉ lấy điều kiện côt A bị lạp lại. Cột B, C không quan tâm.
Bạn lấy bảng chính join với bảng kết quả ở bài 341 là được, không biết cách này có dài không:
Select TableName.* From TableName Inner Join (Select A,Count(A) From TableName Group By A Having Count(A)>1) As Qr On TableName.A=Qr.A
 
Nếu muốn liệt ra tất cả các dòng A thì dùng code bài #346

Nếu muốn liệt chỉ 1 dòng A, dòng nào cũng được thì dùng
Select A, MAX(B) , MAX(C) [C] From BANG Group By A Having Count(A) > 1
 
Nếu muốn liệt ra tất cả các dòng A thì dùng code bài #346

Nếu muốn liệt chỉ 1 dòng A, dòng nào cũng được thì dùng
Select A, MAX(B) , MAX(C) [C] From BANG Group By A Having Count(A) > 1



mình gửi file thực tế mọi người giúp mình nhe.
 

File đính kèm

  • ADO.xls
    34.5 KB · Đọc: 12
Lần chỉnh sửa cuối:
Tôi muốn tổng hợp dữ liệu từ file dữ liệu sang file thống kê, tôi có sử dụng kỹ thuật ADO để lấy, bình thường thì không sao, nhưng hôm nay tự nhiên tôi thấy dữ liệu lấy qua không hết ở một số cột
Trong file này tôi viết theo kiểu lấy nhiều file có nhiều sheet, nhưng tôi đã xóa bớt hết, chỉ để lại 1 file và 2 sheet lấy dữ liệu bị lỗi
Trong file này cột 6 và côt 7 bên sheet thống kê không lấy hết cột 6 và cột 7 ở các sheet trong bảng dữ liệu? xin cho hỏi trường hợp này bị lỗi gì? Xin chân thành cảm ơn
 

File đính kèm

  • tong hop du lieu.rar
    76.1 KB · Đọc: 28
Tôi muốn tổng hợp dữ liệu từ file dữ liệu sang file thống kê, tôi có sử dụng kỹ thuật ADO để lấy, bình thường thì không sao, nhưng hôm nay tự nhiên tôi thấy dữ liệu lấy qua không hết ở một số cột
Trong file này tôi viết theo kiểu lấy nhiều file có nhiều sheet, nhưng tôi đã xóa bớt hết, chỉ để lại 1 file và 2 sheet lấy dữ liệu bị lỗi
Trong file này cột 6 và côt 7 bên sheet thống kê không lấy hết cột 6 và cột 7 ở các sheet trong bảng dữ liệu? xin cho hỏi trường hợp này bị lỗi gì? Xin chân thành cảm ơn

ADO rất quan trọng kiểu dự liệu, Cột 6,7 của bạn có 2 kiểu dữ liệu xen kẽ Text và Number do đó sẽ dẫn tới bỏ sót. Bạn hãy chuẩn hóa kiểu dữ liệu và chạy Code xem sao.
 
Tôi muốn tổng hợp dữ liệu từ file dữ liệu sang file thống kê, tôi có sử dụng kỹ thuật ADO để lấy, bình thường thì không sao, nhưng hôm nay tự nhiên tôi thấy dữ liệu lấy qua không hết ở một số cột
Trong file này tôi viết theo kiểu lấy nhiều file có nhiều sheet, nhưng tôi đã xóa bớt hết, chỉ để lại 1 file và 2 sheet lấy dữ liệu bị lỗi
Trong file này cột 6 và côt 7 bên sheet thống kê không lấy hết cột 6 và cột 7 ở các sheet trong bảng dữ liệu? xin cho hỏi trường hợp này bị lỗi gì? Xin chân thành cảm ơn
Tôi thấy kiểu dữ liệu trong file nguồn vừa là chuổi và số. Điều này vẫn đến lỗi chăng?
 
Tôi thấy kiểu dữ liệu trong file nguồn vừa là chuổi và số. Điều này vẫn đến lỗi chăng?
cũng nghĩ đến khả năng đó, nhưng các sheet khác vẫn ok, không có vấn đề gì? mà chỉ có sheet này mới bị vậy thôi. cái này cũng đã xử lý xong là chuyển về 1 kiểu, nhưng muốn tìm hiểu tại sao nó lại bị như vậy? để phòng trường hợp sau. Cảm ơn hai lúa miền tây nhiều vì đã quan tâm
 
ADO rất quan trọng kiểu dự liệu, Cột 6,7 của bạn có 2 kiểu dữ liệu xen kẽ Text và Number do đó sẽ dẫn tới bỏ sót. Bạn hãy chuẩn hóa kiểu dữ liệu và chạy Code xem sao.
Tại sao tất cả các sheet khác lấy không bị gì? Mà sheet này lại bị? Mình chỉ muốn biết nguyên nhân thôi, còn cách sửa thì cũng đã sửa xong rồi.
 
Chuyện dữ liệu vừa số vừa chuỗi bị bỏ sót là bình thường. Bạn phải biết tính năng này của Excel để thiết kế bảng cho chuẩn, tránh những lỗi khó nhận ra.
May là tỉ lệ dòng lỗi lớn cho nên bạn nhân ra. Giả sử bạn copy vài ngàn dòng, trong đó chỉ có đôi ba dòng lỗi thì có thể bạn bị tình trạng dữ liệu sai mà không hay. Dùng ADO là con dao hai lưỡi mà.

Cách đay khoảng 1 tuần lễ, tôi mới vừa trả về báo cáo của tên nọ, cũng bị sai lý do tương tự.
 
đó có phải là nguyên lý không? tại sao có cái được cái không? đây là dữ liệu em tổng hợp từ nhiều nguồn nhập của nhà xe phương trang, mệt nỗi là mỗi người nhập một kiểu, nhiệm vụ của em là tìm ra sai xót.v..vv, nói chung là em có thể giải quyết ráo các vấn đề này, nhưng mà không hiểu tại sao nó lại như vậy thôi, chủ yếu là biết nguyên nhân hoạt động của nó
 
đó có phải là nguyên lý không? tại sao có cái được cái không? ...

Nguyên lý hay không thì hỏi cái thằng product manager của MS.
Việc cái được cái không dân chuyên chuyển dữ liệu ai cũng biết.
Cùng một đoạn code, đọc dữ liệu 2 files CSV có cấu trúc in hệt nhau, một cái đọc được từ đầu chí cuối, cái kia chỉ nhập được những dòng mà dữ liệu trong cột đó là dạng số, gặp dạng chữ thì nó lướt qua bỏ cả dòng. Sau khi chữa lại, nó đọc dữ liệu số, cứ chuỗi thì tuy không lướt qua dòng nhưng ô lại bị trống.
Muốn bảo đảm chỉ có cách là tách ra 2 cột riêng. Nếu không thì phải dùng cách bạo động:
- Nếu file xlsx thì vào registry sửa lại mặc định số dòng để xác định kiểu (mặc định là 8). Sửa lại là đọc từ đầu đến cuối.
- Nếu file CSV thì hơi chăm, cái này phải dùng một hàm đặc biệt duyệt file, đóng các chuỗi giữa 2 dấu nháy đôi.
 
Anh chị cho em hỏi có thể dùng ADO để kết nối file .DBF với excel để xử lý trên excel không ạ. Em gửi file anh chị xem giúp em. Cám ơn anh chị GPE
 

File đính kèm

  • ps2011.rar
    22.1 KB · Đọc: 5
có anh chị nào giúp tôi giải quyết ADO
With cnn
.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & ThisWorkbook.Path & "\DM.xls" & _
";Extended Properties=""Excel 8.0;HDR=Yes;"";"
.Open
End With


lsSQL = "SELECT MSVT, HPVT, MA_NC " & _
"FROM [DM$] " & _
"WHERE [MHDM] = '& cells(3,2) & ' "

có gì sai mà sao thủ tục không chạy hàm WHERE [MHDM] = '& cells(3,2) & ' " này bị lỗi nhờ các cao thủ trên diễn đàn giải quyết hộ nếu bỏ thủ tục WHERE thì hàm chạy hết
 
có anh chị nào giúp tôi giải quyết ADO
With cnn
.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & ThisWorkbook.Path & "\DM.xls" & _
";Extended Properties=""Excel 8.0;HDR=Yes;"";"
.Open
End With


lsSQL = "SELECT MSVT, HPVT, MA_NC " & _
"FROM [DM$] " & _
"WHERE [MHDM] = '& cells(3,2) & ' "

có gì sai mà sao thủ tục không chạy hàm WHERE [MHDM] = '& cells(3,2) & ' " này bị lỗi nhờ các cao thủ trên diễn đàn giải quyết hộ nếu bỏ thủ tục WHERE thì hàm chạy hết
Bạn xem lại cách nối chuổi nhé

lssql = "SELECT MSVT, HPVT, MA_NC " & _
"FROM [DM$] " & _
"WHERE [MHDM] = '" & Cells(3, 2) & "' "
 
thanhs bạn "WHERE [MHDM] = ' " & Cells(3, 2) & " ' " thủ tục mình chạy tốt rồi
 
Web KT
Back
Top Bottom