Tôi xin lỗi vì chủ quan... nên không nghiên cứu kỹ, nay kiểm tra lại thì thấy mình trả lời sai. Giờ xin viết để tạ lỗi
Một vài ý riêng liên quan đến chủ đề CrosstabQuery và cách truyền tham số để tránh lỗi tham chiếu đến điều khiển trên form.
Một điều đáng tiếc là CrosstabQuery không cho phép chúng ta sử dụng tham chiếu trực tiếp đến điều khiển trên form. Ví dụ điển hình là trong bài tập của bạn Hoand.
Để vượt qua điều này, ta dùng thủ thuật truyền tham số từ form qua tham số của Query. Có lẽ không nhiều bạn sử dụng tiếp cận này, vì thế tôi xin giới thiệu cách sử dụng tham số trong câu lệnh truy vấn của Access.
Thông thường các câu truy vấn có điều kiện được đặt trực tiếp trong dòng lệnh sau các từ khóa như WHERE hoặc HAVING. Tuy nhiên, đôi khi ta muốn câu query có tính chất tương tác một chút. Người dùng sẽ phải nhập vào một giá trị, từ giá trị đó, query sẽ hiển thị kết quả mong đợi.
Trong trường hợp này ta gọi là định nghĩa tham số điều kiện cho Query. Để định nghĩa tham số, chọn nhấn phải chuột trên màn hình soạn thảo query, chọn Parameters. Màn hình soạn thảo Query sẽ hiện ra để bạn khai báo. Cột đầu tiên là tên Tham số và cột thứ 2 là kiểu số liệu.
Trong ví dụ của bạn Hoand thì ta đưa vào 2 tham số tham chiếu đến giá trị của form chọn thời gian F_Chonngay. Sau đó ta đưa điều kiện vào Câu lệnh truy vấn Crosstab với điều kiện chính là 2 tham số đã định nghĩa. Như vậy Query sẽ chạy mà không báo lỗi.
Query Crosstab trong Access có vấn đề đôi chút với truyền tham số tham chiếu trực tiếp từ form. Vì vậy, cho an toàn, nên định nghĩa tham số như thế này và tham chiếu dư lày sẽ ổn!
Mã PHP:
PARAMETERS [Forms]![F_ChonNgay]![TN] DateTime, [Forms]![F_ChonNgay]![DN] DateTime;
TRANSFORM Sum(b.SoLuong) AS SumOfSoLuong
SELECT b.MaHang, c.Tenhanghoa
FROM tblXuatHang AS a INNER JOIN (tblHangHoa AS c INNER JOIN tblXuatHangChiTiet AS b ON c.Mahang = b.MaHang) ON a.MaSoXuat = b.MaSoXuat
WHERE (((a.Ngaylap) Between [Forms]![F_ChonNgay]![TN] And [Forms]![F_ChonNgay]![DN]))
GROUP BY b.MaHang, c.Tenhanghoa
PIVOT a.noinhan;
Xin cáo lỗi các bạn vì ẩu quá
Đặng Đình Ngọc