Lọc duy nhất ADO

Liên hệ QC

keke355992

Thành viên thường trực
Tham gia
19/1/08
Bài viết
310
Được thích
20
Nghề nghiệp
KẾ TOÁN THUẾ, TƯ VẪN THUẾ
Xin chào anh chị !

- E có file như đính kèm và sử dụng ADO mục đích là lọc duy nhất theo cột Mã, nhưng theo dữ liệu xuất ra thì nó k pải duy nhất
- Tuy nhiên, khi phần SELECT không chọn 3 cột cuối (Cột SL, Giá Nhập, Giá Bán) nữa thì nó lại hoạt động đúng.
- E cảm ơn !
 

File đính kèm

  • ADO_KHO - GPE.xlsb
    176.3 KB · Đọc: 20
Trước tiên bạn phải hiểu cấu trúc Distinct đã.

Bạn chọn tất cả các trường để lọc duy nhất thì tất cả các trường đó phải duy nhất.

2 cột đầu của bạn là duy nhất trong khi 3 cột cuối có nhiều giá trị thì nó trả về kết quả như bạn có là đúng.
 
Upvote 0
Xin chào anh chị !

- E có file như đính kèm và sử dụng ADO mục đích là lọc duy nhất theo cột Mã, nhưng theo dữ liệu xuất ra thì nó k pải duy nhất
- Tuy nhiên, khi phần SELECT không chọn 3 cột cuối (Cột SL, Giá Nhập, Giá Bán) nữa thì nó lại hoạt động đúng.
- E cảm ơn !

Tôi thì không rành ADO nhưng theo tôi thì.

- Vế Select của bạn...Cụ thể là bạn Select tất cả là 6 cột trên bản tính
3 cột đầu là Text, 3 cột sau là Number
- Vế Group by của bạn...: bạn lại Group by 6 cột...: Thì coi như không phải duy nhất...

Nếu bạn muốn chỉ Group by cột Mã & sum số của 3 cột cuối thì chỉ cần vế Group by mỗi chỉ tiêu là Cột Mã mà thôi. => ở vế Select bắt buộc phải bỏ 2 trường là Tên hàng và ĐVT ra...

Nếu muốn lấy luôn 2 trường Tên hàng và ĐVT thì ở dưới bạn cần Group by 3 trường Mã, Tên hàng & đơn vị tính... (và tất nhiên là 3 trường cuối không đưa vào Group by) => Là lọc duy nhất theo 3 trường (cột) đầu tiên chứ không phải mỗi cột mã hàng.
 
Upvote 0
Xin chào anh chị !

- E có file như đính kèm và sử dụng ADO mục đích là lọc duy nhất theo cột Mã, nhưng theo dữ liệu xuất ra thì nó k pải duy nhất
- Tuy nhiên, khi phần SELECT không chọn 3 cột cuối (Cột SL, Giá Nhập, Giá Bán) nữa thì nó lại hoạt động đúng.
- E cảm ơn !
đã distinct sao lại còn group by? tôi chưa thấy kiểu này bao giờ cả.
 
Upvote 0
Trước tiên bạn phải hiểu cấu trúc Distinct đã.

Bạn chọn tất cả các trường để lọc duy nhất thì tất cả các trường đó phải duy nhất.

2 cột đầu của bạn là duy nhất trong khi 3 cột cuối có nhiều giá trị thì nó trả về kết quả như bạn có là đúng.
đã distinct sao lại còn group by? tôi chưa thấy kiểu này bao giờ cả.
Tôi thì không rành ADO nhưng theo tôi thì.

- Vế Select của bạn...Cụ thể là bạn Select tất cả là 6 cột trên bản tính
3 cột đầu là Text, 3 cột sau là Number
- Vế Group by của bạn...: bạn lại Group by 6 cột...: Thì coi như không phải duy nhất...

Nếu bạn muốn chỉ Group by cột Mã & sum số của 3 cột cuối thì chỉ cần vế Group by mỗi chỉ tiêu là Cột Mã mà thôi. => ở vế Select bắt buộc phải bỏ 2 trường là Tên hàng và ĐVT ra...

Nếu muốn lấy luôn 2 trường Tên hàng và ĐVT thì ở dưới bạn cần Group by 3 trường Mã, Tên hàng & đơn vị tính... (và tất nhiên là 3 trường cuối không đưa vào Group by) => Là lọc duy nhất theo 3 trường (cột) đầu tiên chứ không phải mỗi cột mã hàng.

- E Sửa lại code theo ý mình muốn rùi, nhưng hiện tại còn 1 vấn đề ở cột Giá bán, e muôn nó lấy giá trị cuối cùng có được không ạ
- Cụ thể trong ví dụ sẽ lấy giá bán cuối cùng của mặt hàng: VỎI RỬA BÁT N-L là: 1.350.000
 

File đính kèm

  • ADO_KHO - GPE.xlsb
    25.3 KB · Đọc: 10
Upvote 0
Được, nếu có cái gì để xác định thế nào là cuối cùng.
 
Upvote 0
Được, nếu có cái gì để xác định thế nào là cuối cùng.
E kiến thức còn hạn chế @@. nên chưa hiểu đc Cái gì của bác nó như thế nào. E diễn giải nó thế này ạ: Cột số lượng thì e đã tổng hợp được rùi, giá nhập thì giá trung bình, nhưng giá bán, lại yêu cầu giá bán phát sinh lần gần nhất ( Lần vào dữ liệu gần nhất - Nó như kiểu là LIFO nhập sau xuất trước ạ) -\\/.
 
Upvote 0
E kiến thức còn hạn chế @@. nên chưa hiểu đc Cái gì của bác nó như thế nào. E diễn giải nó thế này ạ: Cột số lượng thì e đã tổng hợp được rùi, giá nhập thì giá trung bình, nhưng giá bán, lại yêu cầu giá bán phát sinh lần gần nhất ( Lần vào dữ liệu gần nhất - Nó như kiểu là LIFO nhập sau xuất trước ạ) -\\/.

để hiểu cái gì ở đây thì bạn phải hiểu dựa vào đâu để xác định giá bán gần nhất. Nếu như trong chính excel thì bạn có thể coi là giá trị nhập ở dòng (row) cuối, nhưng dùng ADO và SQL thì nó chẳng quan tâm đến row của excel mà nó chỉ quan tâm tới vùng dư liệu (cac cột (trường) dữ liệu và các bản ghi (record) của nội tại dữ liệu. nên nếu muốn xác định giá gần nhất thì bạn phải thêm 1 cột dữ liệu (ví dụ như số thứ tự hay thời gian...).
 
Upvote 0
để hiểu cái gì ở đây thì bạn phải hiểu dựa vào đâu để xác định giá bán gần nhất. Nếu như trong chính excel thì bạn có thể coi là giá trị nhập ở dòng (row) cuối, nhưng dùng ADO và SQL thì nó chẳng quan tâm đến row của excel mà nó chỉ quan tâm tới vùng dư liệu (cac cột (trường) dữ liệu và các bản ghi (record) của nội tại dữ liệu. nên nếu muốn xác định giá gần nhất thì bạn phải thêm 1 cột dữ liệu (ví dụ như số thứ tự hay thời gian...).

Chắc kiến thức của e chưa đủ để làm đc điều này. E sẽ nghiên cứu thêm. Càm ơn các A đã đóng góp ý kiến /-*+/
 
Upvote 0
Vẫn tiếp tục file này ạ. E làm lệnh Tổng hợp dữ liêu từ các Sheet , Các a xem giúp câu lệnh ADO xem liệu có gộp lại thành 1 được không ạ !
- Các Sheet nguồn có cấu trúc dữ liệu khác nhau, chỉ giống nhau ở Title tên cột mà thôi ( Trong diễn đàn e tìm chỉ toàn thấy cấu trúc dữ liệu giống nhau nên k áp dụng đc ạ)
- File gốc của e có rất nhiều Sheets, nhg chỉ tổng hợp 3 Sheet thôi
 

File đính kèm

  • ADO_KHO - GPE.xlsb
    35.6 KB · Đọc: 12
Upvote 0
E kiến thức còn hạn chế @@. nên chưa hiểu đc Cái gì của bác nó như thế nào. ...

Kiến thức hạn chế thì nên học cho kỹ cách nhìn dữ liệu. Bày đăt ê đi ô, đi dù làm chi.

ADO dùng SQL để truy vấn và tổng hợp dữ liệu. SQL là ngôn ngữ dựa vào iên hệ dữ liệu để làm việc.

Học từ gốc liên hệ dữ liệu đến SQL code mất chừng 1 tuần lễ + chục lần hỏi. Dựa trên nguyên tắc đi từ căn bản, nắm được căn bản rồi thì chỉ cần học những cái cốt yếu, và vài mẹo thủ thuật.
Học từ SQL code trở ngược về gốc liên hệ dữ liệu mất chừng 3 tuần lễ + 30 chục lần hỏi. Dựa trên sự suy luận nhìn code riết rồi quen, tự động biết cái căn bản.
 
Upvote 0
Web KT
Back
Top Bottom