-
hực Hành Crosstab Query Trong Access
congvv > 10-12-22, 11:48 PM
Tôi có một đề cần các bạn giúp về việc thống kê lượt phương tiện ra vào, kiểm tra bất kỳ một ngày nào trong tháng( 1 tháng 1 lần): Tôi có bảng có 3 cột : ID khu vực; Ngày tháng; Số lượng. Bảng theo dõi xuyên suốt từ năm này qua năm khác.
Yêu cầu :Thống kê theo tháng/ năm.
Bây giờ tôi muốn ID khu vực là: dòng
Cột tháng sẽ hiện ngày tháng năm
Cột số lượng sẽ đứng sau cột tháng.
Tháng nào cũng có 2 cột trên là cột ngày tháng năm và cột số lượng.
Tôi đã làm coss tap mà chỉ hiện có một cột số lượng theo tháng mà chưa biết cách hiện cả cột ngày tháng năm.
Các bạn biết xin chỉ bảo giùm! Trân trọng! -
RE: hực Hành Crosstab Query Trong Access
tranthanhan1962 > 11-12-22, 10:59 AM
Bạn đưa data lên đi, xem bảng dữ liệu của bạn như thế nào, chứ nói chung chung như thế này thì khó nắm bắt được chính xác công việc của bạn. Tôi chỉ có thể hướng dẫn chung chung như thế này thôi.
Giả sử bạn có 1 table BangPhatSinh có các field ID_KHUVUC, THANG, SOLUONG. Từ đây, có thể tạo 1 crosstab query như hình trên. Bạn có thể sử dụng Query Wizard hoăc create / query design rồi chon query type là crosstab query cũng được (cái này thì tự design không có hỗ trợ). Thực ra khi quen rồi thì tự design sẽ nhanh hơn và linh động hơn.
Trong crosstab query ngoài những tiêu chí giống như select query thì QBE cho thêm Total và Crosstab, bạn cần chú ý những điểm sau:
- Row Heading: Danh sách các nhóm trong field được hiển thị theo hàng.
- Column Heading: Danh sách các nhóm trong field sẽ được hiển thị theo cột
* Field được gán Row Heading, Column Heading luôn có Total là Group By để tổng họp theo nhóm
* Field dược gán Value sẽ có Total là Sum (tổng cộng), Avg (trung bình)... Tùy theo ý đồ của người thiết kế
Sau khi thiết kế xong sẽ được 1 query kiểu như thế này:
Với yêu cầu của bạn, Bạn muốn thêm cột ngày kiểu dòng thì bạn có thể gán cho cột ngày là Row Heading nhưng crosstab query sẽ chỉ tạo được 1 cột ngày duy nhất chứ không thể tạo mỗi tháng có 1 cột ngày được. Nếu muốn hiển thị được theo ý bạn cần phải tìm 1 cách xử lý khác -
RE: hực Hành Crosstab Query Trong Access
congvv > 11-12-22, 10:00 PM
Mẫu bạn xem qua hai hình này mình chụp.
Mình chưa biết làm sao để đăng hình hay đính kèm lên ảnh lên được nên nhờ bạn xem qua hai hình theo link trên. Một hình là Data gốc và một hình là data mong muốn. mong bạn xem qua và chỉ giáo. Cảm ơn bạn rất nhiều! -
RE: hực Hành Crosstab Query Trong Access
tranthanhan1962 > 11-12-22, 10:45 PM
Muốn đăng hình ảnh bạn vao trang imgur rồi post ảnh lên trang đó sau đó copy BBCode dán vào bài viết nó sẽ hiển thị được ảnh. Mình đã biết ý đinh của bạn. crosstab query không thể thực hiện được được điều này, nhưng select query thì làm được tuy có hơi phức tạp một chút. Hiện giờ mình có chút việc chưa hỗ trợ được bạn ngày mai, hoặc ngày mốt mình sẽ sắp xếp thời tạo data rồi xử lý cho bạn. query không thể tạo tiêu đề nhiều dòng bạn phải chuyển qua report mới xử lý được điều này. -
RE: hực Hành Crosstab Query Trong Access
tranthanhan1962 > 13-12-22, 12:59 AM
Nhìn vào báo cáo của bạn thoạt nhìn có vẻ đơn giản, nhưng khi xem xét kỹ thì lại khác. Bởi vì bản chất của nó hoàn toàn không phải là bảng Crosstab mà nó là ma trận 2 chiều theo nhiều tiêu chí. Dòng gồm có Mã sản phẩm và ngày, hàng ngày xếp theo thứ tự, Cột quản lý các field Mã sản phẩm, ngày theo từng tháng và số lượng. ngày cũng không theo thứ tự từ nhỏ đến lớn mà sau khi hết 1 tháng nó sẽ trả về dòng đầu cho tháng sau. Và tất nhiên Crosstab của excel cũng khó lòng mà xử lý được.
Tất nhiên sau khi nghiên cứu tôi cũng tìm được cách xử lý.
Đặc điểm của acess là khi xử lý báo cáo khác với excel là thiết kế 1 lần, sử dụng mãi mãi và không thể thêm bớt khi đã đưa ra sử dụng, để thực hiện được điều này không thể hướng dẫn bạn ngay lập tức với vài câu nói qua forum bởi vì để thỏa điều kiện của bạn phải kết hợp nhiều thứ, table, query, form, report và lệnh. Nên tôi xử lý trên database rồi post để bạn tải về nghiên cứu, có gì thắc mắc bạn cứ hỏi tôi sẽ giải đáp.
Đây là file tôi đã xử lý
Một vài hình ảnh kết quả:
Dữ liêu gốc được nhập vào table tblPhatSinh
Form báo cáo frmTongHop
Sau khi nhập năm vào form báo cáo thì Click vào nút lệnh xem báo cáo ta được report báo cáo: rptBangTongHop
Chúc bạn thành công! -
RE: hực Hành Crosstab Query Trong Access
tungthoi15 > 14-12-22, 10:07 AM
(13-12-22, 12:59 AM)tranthanhan1962 Đã viết: Nhìn vào báo cáo của bạn thoạt nhìn có vẻ đơn giản, nhưng khi xem xét kỹ thì lại khác. Bởi vì bản chất của nó hoàn toàn không phải là bảng Crosstab mà nó là ma trận 2 chiều theo nhiều tiêu chí. Dòng gồm có Mã sản phẩm và ngày, hàng ngày xếp theo thứ tự, Cột quản lý các field Mã sản phẩm, ngày theo từng tháng và số lượng. ngày cũng không theo thứ tự từ nhỏ đến lớn mà sau khi hết 1 tháng nó sẽ trả về dòng đầu cho tháng sau. Và tất nhiên Crosstab của excel cũng khó lòng mà xử lý được.
Tất nhiên sau khi nghiên cứu tôi cũng tìm được cách xử lý.
Đặc điểm của acess là khi xử lý báo cáo khác với excel là thiết kế 1 lần, sử dụng mãi mãi và không thể thêm bớt khi đã đưa ra sử dụng, để thực hiện được điều này không thể hướng dẫn bạn ngay lập tức với vài câu nói qua forum bởi vì để thỏa điều kiện của bạn phải kết hợp nhiều thứ, table, query, form, report và lệnh. Nên tôi xử lý trên database rồi post để bạn tải về nghiên cứu, có gì thắc mắc bạn cứ hỏi tôi sẽ giải đáp.
Đây là file tôi đã xử lý
Một vài hình ảnh kết quả:
Dữ liêu gốc được nhập vào table tblPhatSinh
Form báo cáo frmTongHop
Sau khi nhập năm vào form báo cáo thì Click vào nút lệnh xem báo cáo ta được report báo cáo: rptBangTongHop
Chúc bạn thành công!
Hay quá, bác dùng bản Office nào thế, em dùng bản 2010 ; 32 bít báo lỗi như này ạ
[/img][/color]
-
RE: hực Hành Crosstab Query Trong Access
tranthanhan1962 > 14-12-22, 05:37 PM
Mình sử dung office 2019 - 64 bit. để mình cài thêm 2010 - 32 rồi chuyển sang bảng 32 bit -
RE: hực Hành Crosstab Query Trong Access
congvv > 14-12-22, 08:41 PM
(13-12-22, 12:59 AM)tranthanhan1962 Đã viết: Nhìn vào báo cáo của bạn thoạt nhìn có vẻ đơn giản, nhưng khi xem xét kỹ thì lại khác. Bởi vì bản chất của nó hoàn toàn không phải là bảng Crosstab mà nó là ma trận 2 chiều theo nhiều tiêu chí. Dòng gồm có Mã sản phẩm và ngày, hàng ngày xếp theo thứ tự, Cột quản lý các field Mã sản phẩm, ngày theo từng tháng và số lượng. ngày cũng không theo thứ tự từ nhỏ đến lớn mà sau khi hết 1 tháng nó sẽ trả về dòng đầu cho tháng sau. Và tất nhiên Crosstab của excel cũng khó lòng mà xử lý được.
Mình cảm ơn bạn nhiều lắm! Để mình nghiên cứu rồi thực hành, nếu có gì không rõ mình nhờ bạn chỉ bảo thêm giúp mình. Chúc bạn nhiều sức khỏe và niềm vui!
Tất nhiên sau khi nghiên cứu tôi cũng tìm được cách xử lý.
Đặc điểm của acess là khi xử lý báo cáo khác với excel là thiết kế 1 lần, sử dụng mãi mãi và không thể thêm bớt khi đã đưa ra sử dụng, để thực hiện được điều này không thể hướng dẫn bạn ngay lập tức với vài câu nói qua forum bởi vì để thỏa điều kiện của bạn phải kết hợp nhiều thứ, table, query, form, report và lệnh. Nên tôi xử lý trên database rồi post để bạn tải về nghiên cứu, có gì thắc mắc bạn cứ hỏi tôi sẽ giải đáp.
Đây là file tôi đã xử lý
Một vài hình ảnh kết quả:
Dữ liêu gốc được nhập vào table tblPhatSinh
Form báo cáo frmTongHop
Sau khi nhập năm vào form báo cáo thì Click vào nút lệnh xem báo cáo ta được report báo cáo: rptBangTongHop
Chúc bạn thành công! -
RE: hực Hành Crosstab Query Trong Access
congvv > 14-12-22, 10:51 PM
Mình có một vài vấn đề cần hỏi bạn: vì bảng database của bạn có vấn đề.
Thứ nhất : Form báo cáo frmTongHop: nhập số năm mà không đi đến đâu cả.
Thứ 2: tôi thấy dữ liệu trong bảng [rptBangTongHop] giống với bảng [tblTongHop]. Vậy hỏi bạn, vậy thì cần mấy cái truy vấn làm gì.
Mình chưa hiểu quy trình của bảng và nguyên tắc của bảng nên muốn được bạn chỉ bảo thêm. Nếu có video hướng dẫn càng tốt.
email: congvv1@outlook.
Trân trọng cảm ơn! -
RE: hực Hành Crosstab Query Trong Access
tranthanhan1962 > 15-12-22, 12:27 AM
Thứ nhất: Form báo cáo frmTongHop: số năm không phải không đi đến đâu cả như bạn nói mà đó là con số cực kỳ quan trọng vì tất cả các báo cáo thống kê đều được đóng khung 1 năm và từ tháng 1 đến tháng 12 của năm đó năm đó. Chẳng lẽ bạn làm cơ sở dữ liệu chỉ có 1 năm rồi qua năm khác bạn xóa hết dữ liêu của database cũ rồi nhập lại dữ liệu của năm mới như excel là lấy file excel cũ copy - đỗi tên rồi sau đó xóa giá trị năm cũ nhập lại giá trị mới. Khi bạn đến với access có một vài điều cần thay đỗi suy nghĩ như khi làm với excel. access là 1 chương trình chứ không phải là 1 bảng tính như excel. Exel: Tạo một khuôn mẫu, sau đó copy thành nhiều khuôn mẫu khác để sử dụng tùy theo yêu cầu. Access: viết chương trình 1 lần sau đó sử dụng mãi mãi. Excel: Người sử dụng có thể tùy tiện thay đổi biểu mẫu theo ý mình thậm chí thêm bớt công thức tính toán giá trị theo ý người sử dụng. Access: Chương trình là hệ thống bảo mật với cả người sử dụng. Người sử dụng chỉ có nhiệm vụ nhập- kiểm tra dữ liệu dưới sự cho phép của quản trị viên (có mật khẩu chương trình mới được vào, những chương trình phân cấp quyền người dùng thì người sử dụng nào được vào phần của chương trình còn do admin cho phép chứ không có nghĩa là có mật khẩu là vào đâu cũng được). Khi một chương trình hoàn chỉnh thì người sữ dụng sẽ không thấy table, không thấy query, không thấy macro, không thấy code. Người sử dụng chỉ thấy được 3 thứ menu, form và report mà ngay cả 3 thứ này cũng chỉ thấy được hình ảnh để làm việc chứ không thấy phần design vì tất cả đều bị khóa design không cho phép người sử dụng vào chỉnh sửa hay quậy phá. Vì vậy chương trình phải tính đến việc sử dung nhiều năm, Việc nhập số năm trên frmTongHop là để chỉ tính toán dữ liệu trong năm đó chứ không liên quan đến dữ liệu của năm khác.
Nếu bạn gõ vào năm 2022 thì bạn sẽ thấy được report của năm 2022 vì trong table tblPhatSinh đang có record phát sinh của năm 2022. Nhưng nếu bạn thử gõ vào những năm khác chương trinh sẽ báo ngay "Bao cao khong co du lieu" (nếu trong table bạn được nhập thêm dữ liệu năm nào nó sẽ hiển thị trên report bảng kết quả của năm đó nếu không nó sẽ báo không có). Tất nhiên thông báo của tôi viết không có dấu vì nếu có dấu tiếng Việt cần phải thêm 1 số code nữa và nó nằm ngoài yêu cầu của chủ đề nên tôi không xử lý thêm phần này.
Thứ hai: rptBangTongHop không phải là bảng mà nó là report, và report này có recordsource chính là table tblTongHop Khác với 1 table trên excel, table trong acces chỉ dùng để chứa record dữ liệu khi bạn mở ra thì bạn chỉ xem được giá tri dữ liêu chứ không có giá trị hành chính. Khi bạn in ra chỉ thấy cột, dòng ngoài ra chẳng có thứ gì, ngay cả tên cột (field) cũng không có tiếng Viêt, vì vậy report ngoài việc hiển thị để xem bạn có thể thiết kế các tiêu đề ngày in, ngày lập bảng, người lập bảng. thủ kho, giám đốc... Chứ trên table bạn đâu có thiết kế tùy tiện như table excel.
Về các truy vấn (query) tôi lam thêm để bạn tiện nghiên cứu (vì biết bạn là người mới) ngoài các select query dùng để xử lý tổng hợp tạo giá trị cho rptBangTongHop các action query dùng để chạy lệnh SQL, bạn có thể chuột phải chọn SQL view nó sẽ hiển thị dòng lệnh SQL và tôi đưa nó vào code để chạy lệnh tôi có thể xóa mấy action query này mà không ảnh hưởng đến chương trình vì tôi đã đưa vào code, lý do tôi chừa lại là để bạn nghiên cứu
Thứ tư: Vì tôi cũng có nhiều việc nên sự hỗ trờ anh em là có hạn. Nếu bạn chưa có đủ kiển thức về access toi nghĩ rằng điều đầu tiên bạn cần là tải một số tài lệu access căn bản đọc trước rồi từ từ nghiên cứu, hoăc bạn có thể đăng ký các khóa học về access căn bản. Sao đó thực hiện có gì khó cứ post lên anh em hỗ trợ. Thân