Đánh giá chủ đề:
  • 0 Votes - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
[Lỗi] Giúp mình gỡ lỗi Crosstab Query này với các huynh đệ.
#1
Mình đang làm file thống kê sử dụng crosstab query cụ thể: Khi mình tính tổng số Đảng viên mà không có Đoàn viên nào thì bị báo lỗi và ngược lại, còn nếu trong tổng số nhân viên đều có Đoàn viên Đảng viên thì không sao cả, (mình muốn nếu không có Đảng viên, hay Đoàn viên thì thống kê sẽ =0) không biết mình sai chỗ nào. Xin các huynh đệ giúp cho mình với. Mình có kèm theo file bị lỗi đây nhé. Thành thật cảm ơn!
https://www.box.com/s/4ryxgmbaerekf0mx94fg
Chữ ký của nguyenbalai Càng học càng thấy mình ngu, vì thấy mình ngu nên càng phải học!
Reply
Những người đã cảm ơn
#2
Toi dang online bang di dong nen khong xem duoc bai cua ban. theo toi cu dung cach tao theo access huong dan ma lam
Chữ ký của Xuân Thanh Trăm năm trước thì ta chưa gặp
Trăm năm sau biết gặp được không?
Cuộc đời sắc sắc không không
Thì thôi ta cứ hết lòng vì nhau
ღღღღღTài sản của Xuân Thanh (View All Items) ღღღღღ
Reply
Những người đã cảm ơn
#3
File của Nguyenbalai không tài nào mở đc các ứng dụng trong File : Báo lỗi trong Modun và Tham chiếu
---> tắt cũng kg đc thoát cũng kg xong --> còn mỗi cách là Reset lại Máy tính .Nên xem lại toàn bộ ........các Code trong Modun cho chuẩn
* Lưu ý giữa Định dạng Text và Số trong Table nguồn với Cách truy vấn , khi lấy kết quả định dạng =Number hay ký tự còn theo hướng dẫn của Access thì hiếm khi lỗi , trừ khi mình làm kg đúng trong cách đặt truy vấn
Nghiên cứu rồi gửi bài lên
Chúc Thành công
Khải Nguyên
Chữ ký của khải nguyên Khải Nguyên Xin Gửi lời chào tới Tất cả các bạn trên Diễn Đàn Thủ Thuật Access
Chúc cả nhà may mắn và  thành đạt ! Lightbulb
Reply
Những người đã cảm ơn
#4
File mình gửi lên hoàn toàn không có modun nào cả bạn khải nguyên ạ, mình đã down về và test lại vẫn chạy bình thường. File chỉ có 2 table, 10 query và 1 report thôi. Mình đang để nó khi chạy report gặp lỗi cho các bạn dễ xem, nếu khải nguyên vào table t01_TrichNgangHS Check field DangVien cho có 1 Dang vien = true thì không gặp lỗi nữa. Thanks!
Chữ ký của nguyenbalai Càng học càng thấy mình ngu, vì thấy mình ngu nên càng phải học!
Reply
Những người đã cảm ơn
#5
Thử File này xem sao
http://www.mediafire.com/download/9n203r..._Query.rar
có gì hồi âm nhé máy giờ chậm quá hổng biết sao ...Của Chùa mà !!!!!
có gì Sorry nhé !
Ôi giời ma ám rồi kg up đc ..hãy tham khảo SQL Query

Q-KHÔNG CÓ ĐOÀN VÀ KHÔNG CÓ ĐẢNG

TRANSFORM Count(t01_TrichNgangHS.HoTen) AS CountOfHoTen
SELECT t01_TrichNgangHS.Malop, t01_TrichNgangHS.DoanVien, t01_TrichNgangHS.DangVien, Count(t01_TrichNgangHS.MaHS) AS CountOfMaHS
FROM t01_TrichNgangHS
WHERE (((t01_TrichNgangHS.DoanVien)=0) AND ((t01_TrichNgangHS.DangVien)=0))
GROUP BY t01_TrichNgangHS.Malop, t01_TrichNgangHS.DoanVien, t01_TrichNgangHS.DangVien
PIVOT t01_TrichNgangHS.MaHS;

Q - KHÔNG CÓ ĐOÀN

TRANSFORM Count(t01_TrichNgangHS.HoTen) AS CountOfHoTen
SELECT t01_TrichNgangHS.Malop, t01_TrichNgangHS.DoanVien, Count(t01_TrichNgangHS.MaHS) AS CountOfMaHS
FROM t01_TrichNgangHS
WHERE (((t01_TrichNgangHS.DoanVien)=0))
GROUP BY t01_TrichNgangHS.Malop, t01_TrichNgangHS.DoanVien
PIVOT t01_TrichNgangHS.MaHS;

Q- KHÔNG CÓ ĐẢNG
TRANSFORM Count(t01_TrichNgangHS.HoTen) AS CountOfHoTen
SELECT t01_TrichNgangHS.Malop, t01_TrichNgangHS.DangVien, Count(t01_TrichNgangHS.MaHS) AS CountOfMaHS
FROM t01_TrichNgangHS
WHERE (((t01_TrichNgangHS.DangVien)=0))
GROUP BY t01_TrichNgangHS.Malop, t01_TrichNgangHS.DangVien
PIVOT t01_TrichNgangHS.MaHS;

Chúc thành công
Khải Nguyên
Chữ ký của khải nguyên Khải Nguyên Xin Gửi lời chào tới Tất cả các bạn trên Diễn Đàn Thủ Thuật Access
Chúc cả nhà may mắn và  thành đạt ! Lightbulb
Reply
Những người đã cảm ơn
#6
Thành thật cảm ơn bạn khải nguyên rất nhiều về 3 SQL Query bạn gửi cho. nhưng mình chỉ muốn cộng số có Đảng hoặc có Đoàn thì làm như thế nào hả bạn, mình đã thử thay dòng
WHERE (((t01_TrichNgangHS.DangVien)=0))
bằng
WHERE (((t01_TrichNgangHS.DangVien)=1))
nhưng sao không hiển thị được bạn nhỉ, mình thử nhiều cách đều tuân thủ theo hướng dẫn của Access nhưng vẫn không được.
Thực ra mình muốn sửa lại chính file mà mình đã gửi, còn thống kê không có Dang, không có Doan hoặc không có Dang và Doan thì crosstab query như vậy là quá chuẩn rồi, Bạn giúp mình với nhé. Thanks!
Chữ ký của nguyenbalai Càng học càng thấy mình ngu, vì thấy mình ngu nên càng phải học!
Reply
Những người đã cảm ơn
#7
Trong thuộc tính của trường Yes/No thì GIÁ TRỊ của nó phải là ( =1 ) và ( -1 )
Xem đúng ý không nhé :
SQL CỦA Q -CÓ ĐẢNG:
TRANSFORM Count(t01_TrichNgangHS.HoTen) AS CountOfHoTen
SELECT t01_TrichNgangHS.Malop, t01_TrichNgangHS.DangVien, Count(t01_TrichNgangHS.MaHS) AS CountOfMaHS
FROM t01_TrichNgangHS
WHERE (((t01_TrichNgangHS.DangVien)=-1))
GROUP BY t01_TrichNgangHS.Malop, t01_TrichNgangHS.DangVien
PIVOT t01_TrichNgangHS.MaHS;

SQL CỦA Q-CÓ ĐOÀN
TRANSFORM Count(t01_TrichNgangHS.HoTen) AS CountOfHoTen
SELECT t01_TrichNgangHS.Malop, t01_TrichNgangHS.DoanVien, Count(t01_TrichNgangHS.MaHS) AS CountOfMaHS
FROM t01_TrichNgangHS
WHERE (((t01_TrichNgangHS.DoanVien)=-1))
GROUP BY t01_TrichNgangHS.Malop, t01_TrichNgangHS.DoanVien
PIVOT t01_TrichNgangHS.MaHS;
Nghiên Cứu xem nhé
Chúc Thành Công
Khải Nguyên !
Chữ ký của khải nguyên Khải Nguyên Xin Gửi lời chào tới Tất cả các bạn trên Diễn Đàn Thủ Thuật Access
Chúc cả nhà may mắn và  thành đạt ! Lightbulb
Reply
Những người đã cảm ơn
#8
Quay lại yêu cầu đầu bài của tác giả. Khi tôi đọc yêu cầu, tôi không nắm được ý tác giả muồn gì... hic! Quả là năng lực đọc có hạn.
Tuy nhiên, nếu tạm cắt nghĩa ý kiến "hỏi - đáp" thì có thể thấy đầu bài không hẳn là khó và ta hoàn toàn có thể giải quyết mà không cần sử dụng Cross-tab. Phải nói thật - mặc dù Crosstab là rất tiện lợi nhưng ta không nên sử dụng nó mọi nơi - mọi lúc nếu không bắt buộc phải làm vậy. Nếu có cách khác thì ta nên tránh và thay bằng cách khác đó. Và tôi dùng một cách khác như trong bài này.
Mã PHP:
SELECT t00_LopHoc.*, c.Doanc.Dang
FROM t00_LopHoc INNER JOIN 
(SELECT b.MalopSum(Abs(b.[DoanVien])) AS DoanSum(Abs(b.[DangVien])) AS Dang
FROM t01_TrichNgangHS 
AS b
GROUP BY b
.Malop
) AS c ON t00_LopHoc.MaLop c.Malop
Ở đây, tác giả chỉ cần đếm số đảng viên trong 1 lớp và đoàn viên trong 1 lớp vì thế ta dùng 1 query dạng nhóm và thực hiện phép đếm.
Trong bài trả lời tôi không dùng phép đếm mà dùng một cách đơn giản hơn đó là tính tổng của tất cả các bản ghi có trường đảng viên = -1 và đổi kết quả sang dạng trị tuyệt đối. Tại sao? Vì nếu đảng viên là đúng, nó sẽ có giá trị là true. Cách này sẽ ổn hơn việc dùng cách đếm (chỉ dùng cách đếm khi ta có dữ liệu không đồng nhất).
Quay lại yêu cầu và giải thích tại sao Cross-tab là nên tránh: Cách thực hiện querry crosstab đòi hỏi tốn nhiều bộ nhớ và tài nguyên máy tính. Đại loại là máy tính sẽ phải đi qua nhiều dòng, mỗi khi thấy dòng có số liệu mới, nó thêm 1 cột và thêm cho đến khi hết bản ghi. Máy tính sẽ dự phòng một khoảng bộ nhớ cho việc đó và nó luôn luôn thường trực 2 động tác, 1 là thực hiện phép toán, 2 là bổ sung cột mới nếu cần. Nếu số bản ghi khác nhau quá lớn, nó sẽ gây lỗi vì phải thêm số trường quá lớn. Để hạn chế số lượng cột đầu ra, người ta có thể bắt máy chỉ hiển thị những trường trong danh mục cho trước bằng cách lấy tên trường sau từ khóa IN (Danh sách).
Chính vì lý do đó, với bài toán, chỉ đòi hỏi thực hiện phép toán với 2 trạng thái - có, không? Thì đơn giản là quay về những Querry truyền thống.
Tiếp theo, với các thống kê khác, bạn hoàn toàn có thể áp dụng cách tiếp cận tôi đã mô tả bằng cách làm các query thống kê riêng, chẳng hạn:
1. Thống kê Nam, Nữ
2. Thống kê Dân tộc (cái này thì nên dùng Crosstab vì ta không biết trước số dân tộc của một lớp - nếu bạn muốn phân theo dân tộc gì? Dao, Kinh ...., nếu chỉ muốn đếm thì áp dụng như cách tôi dùng). Ngoài ra, nếu bạn muốn khống chế số nhóm dân tộc trong querry- Crosstab thì bạn có thể dùng cách như sau:
Mã PHP:
TRANSFORM Count(a.MaHS) AS CountOfMaHS
SELECT a
.MalopCount(a.MaHS) AS [Total Of MaHS]
FROM t01_TrichNgangHS AS a
GROUP BY a
.Malop
PIVOT a
.DanToc In ("Sơ Drá","Kinh","H'Mông"); 
Trong ví dụ này, nếu H'Mông không có bản ghi nào thì số liệu sẽ là 0...
3. Thống kê đảng, đoàn
Tất cả các querry trên đều đảm bảo phải có trường Mã lớp.... sau đó dùng Querry thống kê chung là xong.
Tôi xin có sự chia sẻ nhỏ nhặt vậy, nếu cần nói nhiều hơn về Cross-tab - tôi sẽ cố gắng võ vẽ thêm nếu bạn cần...
Thân
Chữ ký của paulsteigel ====================
Quốc gia hưng vong
Thất phu hữu trách
====================
Reply
Những người đã cảm ơn Xuân Thanh , nguyenbalai , Che_Guevara
#9
Xin thành thật cảm ơn bài viết trả lời của paulsteigel, quả thật là mình chỉ mới võ vẽ về ac nên khi viết câu hỏi có rườm rà và không rõ ràng lắm. Bài viết của bạn đã làm mình khai sáng thêm nhiều, mình sẽ cố gắng hết sức để thực hiện hướng dẫn của bạn. Cho đến hiện giờ mình vẫn cứ loay hoay mãi về vấn đề này mà chưa xong. Có gì bạn cố gắng giúp mình với. Trân trọng cảm ơn paulsteigel và chúc sức khỏe bạn.
Chữ ký của nguyenbalai Càng học càng thấy mình ngu, vì thấy mình ngu nên càng phải học!
Reply
Những người đã cảm ơn paulsteigel
#10
Cảm ơn bạn nguyenbalai,
Chia sẻ, hỏi đáp là một cách tốt nhất để chúng ta cùng học nhau. Vậy chia sẻ, hỏi đáp thế nào cho rõ và giúp những người khác hệ thống được tiến trình hỏi đáp một cách nhanh nhất là điều ta nên làm. Tôi thấy những trao đổi trên các diễn đàn học thuật, nếu được hệ thống tốt sẽ thành một kho các công cụ và kiến thức tốt hơn giáo trinh rất nhiều vì nó có sự đóng góp giữa thực chứng (các dẫn chứng mà người hỏi cung cấp và thậm chí là cả ví dụ mẫu) và lý thuyết (phần đáp của các thành viên).
Chính vì thế, dù tham gia ở đâu, tôi vẫn luôn đề cao sự rõ ràng của câu hỏi, thậm chí đôi khi tôi cũng cố gắng cắt nghĩa hộ người hỏi bằng một bài tính huống (thỉnh thoảng thôi hihi - nếu có thời gian).
Khi vấn đề của bạn được giải quyết, niềm vui đó không chỉ là của bạn mà còn là của chúng ta nữa, vì thế nếu có thể giúp gì được nhau, cớ sao lại không sẵn lòng chứ (giống như trong chữ ký của bạn Xuan Thanh).
Vì thế, nếu có bất kỳ câu hỏi gì, hãy chia sẻ và chúng ta cùng nhau giải đáp nhé.
Chân thành
Đặng Đình Ngọc
Chữ ký của paulsteigel ====================
Quốc gia hưng vong
Thất phu hữu trách
====================
Reply
Những người đã cảm ơn Noname , Xuân Thanh


Có thể liên quan đến chủ đề
Chủ đề: Tác giả Trả lời: Xem: Bài mới nhất
  Lọc query có điều kiện để tạo report honglv157 3 160 01-12-16, 05:15 PM
Bài mới nhất: maidinhdan
  [Help] Xin giúp đỡ về sử dụng hàm Dlookup với nhiều điều kiện dangh5 1 73 30-11-16, 10:44 PM
Bài mới nhất: dangh5
  [Help] ẩn nút ""Close Windown" khi mở query tronghieu9792 4 86 30-11-16, 09:36 PM
Bài mới nhất: tronghieu9792
Question [Help] Cần giúp đỡ tạo query lấy giá trị của dòng liền trước để tính giá trị trung bình luonguct 4 89 23-11-16, 12:33 AM
Bài mới nhất: luonguct
  Hướng Dẫn hướng dẫn làm query tieuho828 6 150 21-11-16, 12:36 AM
Bài mới nhất: toancvp

Chuyển nhanh:


User(s) browsing this thread: 1 Guest(s)
Diễn Đàn Thơ Văn Thi Ẩm Lâu|Nhà Hàng Sông Thơ