vietqlc > 22-11-12, 04:29 PM
nhannt4 > 22-11-12, 05:18 PM
SELECT Tbl_Sach.IDSach, Tbl_Sach.TenSach, Tbl_NgonNgu.TenNgonNgu, Tbl_TheLoai.TenTheLoai, Tbl_Kho.TenKho, Tbl_TacGia.TenTacGia, Tbl_NhaXB.TenNhaXB, Tbl_CTXB.NamXB, Tbl_CTXB.LanXB, Tbl_CTXB.SoTrang, Tbl_CTXB.Gia, Tbl_CTXB.KemCD, Tbl_CTXB.SoLuong
FROM Tbl_TheLoai INNER JOIN (Tbl_TacGia INNER JOIN (((Tbl_NgonNgu INNER JOIN (Tbl_Kho INNER JOIN Tbl_Sach ON Tbl_Kho.IDKho = Tbl_Sach.IDKho) ON Tbl_NgonNgu.IDNgonNgu = Tbl_Sach.IDNgonNgu) INNER JOIN (Tbl_NhaXB INNER JOIN Tbl_CTXB ON Tbl_NhaXB.IDNXB = Tbl_CTXB.IDNXB) ON Tbl_Sach.IDSach = Tbl_CTXB.IDSach) INNER JOIN Tbl_SangTac ON Tbl_Sach.IDSach = Tbl_SangTac.IDSach) ON Tbl_TacGia.IDTacGia = Tbl_SangTac.IDTacGia) ON Tbl_TheLoai.IDTheLoai = Tbl_Sach.IDTheLoai
WHERE (((Val(Left([tbl_Sach].[IDSach],4)))=[forms]![F_ThongKe]![TxtNhap]));
vietqlc > 22-11-12, 06:02 PM
(22-11-12, 05:18 PM)nhannt4 Đã viết: Chào bạn,Mình làm code cho query Q_ThongKeSachTheoNam như vậy rồi nhưng vẫn không có kết quả. Bạn xem lại code giúp
Bạn thiết kế database hơi bị "lạ"
- Theo mình thấy thì bạn dựa vào 4 ký tự đầu của IDSach để xác định năm xuất bản của Sách nhưng trong table Tbl_CTXB lại có field NamXB, trong đó Năm xuất bản lại có giá trị "tréo ngoe" khác. Nên việc thiết kế cái Subform cho ra dữ liệu hiển thị sai.
- Điều kiện trong Query "Q_ThongKeSachTheNam" là dữ liệu kiểu chuỗi nhưng bạn đưa vào lại là dữ liệu kiểu Number. Vì thế, chỗ này bạn thêm hàm Val vào thì sẽ khắc phục được, cụ thể code cho Query này như sau:
Mã:SELECT Tbl_Sach.IDSach, Tbl_Sach.TenSach, Tbl_NgonNgu.TenNgonNgu, Tbl_TheLoai.TenTheLoai, Tbl_Kho.TenKho, Tbl_TacGia.TenTacGia, Tbl_NhaXB.TenNhaXB, Tbl_CTXB.NamXB, Tbl_CTXB.LanXB, Tbl_CTXB.SoTrang, Tbl_CTXB.Gia, Tbl_CTXB.KemCD, Tbl_CTXB.SoLuong
FROM Tbl_TheLoai INNER JOIN (Tbl_TacGia INNER JOIN (((Tbl_NgonNgu INNER JOIN (Tbl_Kho INNER JOIN Tbl_Sach ON Tbl_Kho.IDKho = Tbl_Sach.IDKho) ON Tbl_NgonNgu.IDNgonNgu = Tbl_Sach.IDNgonNgu) INNER JOIN (Tbl_NhaXB INNER JOIN Tbl_CTXB ON Tbl_NhaXB.IDNXB = Tbl_CTXB.IDNXB) ON Tbl_Sach.IDSach = Tbl_CTXB.IDSach) INNER JOIN Tbl_SangTac ON Tbl_Sach.IDSach = Tbl_SangTac.IDSach) ON Tbl_TacGia.IDTacGia = Tbl_SangTac.IDTacGia) ON Tbl_TheLoai.IDTheLoai = Tbl_Sach.IDTheLoai
WHERE (((Val(Left([tbl_Sach].[IDSach],4)))=[forms]![F_ThongKe]![TxtNhap]));
nhannt4 > 23-11-12, 09:56 AM
vietqlc > 23-11-12, 10:31 AM
(23-11-12, 09:56 AM)nhannt4 Đã viết: Sao lại không được, mình đã test kỹ rồi.
Bạn xem lại phần dữ liệu hiển thị trên Subform đi, dữ liệu này là không đúng so với thực tế (xử lý dữ liệu lấy 4 ký tự đầu là năm xuất bản nhưng field NamXB lại nhập giá trị khác -> dữ liệu không thống nhất: điều kiện 1 đằng mà xử lý dữ liệu 1 nẻo). Chính xác nhất là bạn mở table Tbl_Sach ra xem phần 4 ký tự đầu của IDSach rồi dựa vào nó test thử xem.
P/s: mình đã chỉnh sửa lại file của bạn hoàn chỉnh (chỉ thêm đúng hàm Val vào) và chạy tốt nhưng không up lên, lý do là để bạn tìm ra lỗi và khắc phục thì sẽ hay hơn.
nhannt4 > 23-11-12, 12:24 PM
Select Case FrThongke.Value
Case 0
DoCmd.OpenReport "R_ThongKeDocGia", acViewPreview
Case 1
DoCmd.OpenReport "R_ThongKeDocGiaTheoLop", acViewPreview
Case 2
DoCmd.OpenReport "R_ThongKeDocGiaTheoGioiTinh", acViewPreview
Case 3
DoCmd.OpenReport "R_ThongKeDocGiaTheoNam", acViewPreview
Case 5
DoCmd.OpenReport "R_DocGiaChuaTraSach", acViewPreview
End Select