Hình như bạn đang cố gắng xử lý access bằng dữ liệu của các bảng excel.
Nếu giữ nguyên các table như thế để xử lý cũng được nhưng làm như vậy là sai nguyên tắc access (mỗi tuần bạn phải xử lý để lọc bằng một query khác nhau, và như thế bạn đã vi phạm luật của access. Vì access là
“làm một lần giải quyết cho tất cả”. Còn nếu làm theo cách của bạn mỗi tuần phải làm một query).
Giải pháp đề nghị:
Để cho dễ dàng hơn tôi sẽ chuyển hết sang tiếng việt (để làm cho nhanh).
Phân tích:
Tên hàng (
Item_Code): A,B,C,D
Tồn kho (
MONTHLY_STOCK) tháng 9/2015 với số lượng (
Quantity) A =1000, B = 2000, C = 3000, D = 0
Nghiệp vụ: Có 2 nghiệp vụ: Nhận hàng (
RECEIPT), Bán hàng (
SALES)
Tuần (Week): Bạn tính tồn kho theo tuần.
Từ cơ sở dữ liệu của bạn tôi sẽ thiết kế lại như sau:
Table: có 3 table (Tên hàng –
tlbTenHang, Tuần –
tlbTuan, Phát sinh –
tlbPhatSinh)
Dữ liệu các table như sau:
Trong tlbTuan có tuần 0 được xem như là tồn đầu tháng 9/2015
Mã:
Tạo query Q_Tonkho0 từ tlbPhatSinh:
SELECT tlbPhatSinh.TenHang, tlbPhatSinh.SLNhan, tlbPhatSinh.SLBan
FROM tlbPhatSinh
WHERE (((tlbPhatSinh.Tuan)<=[Tuần]));
Tạo query total Q_Tonkho từ Q_Tonkho0:
Mã:
SELECT Q_Tonkho0.TenHang, Sum(Q_Tonkho0.SLNhan) AS SLNhan, Sum(Q_Tonkho0.SLBan) AS SLBan, [SLNhan]-[SLBan] AS SLTon
FROM Q_Tonkho0
GROUP BY Q_Tonkho0.TenHang;
Khi gọi query Q_Tonkho bạn chỉ cần điền giá trị tuần nào nó sẽ tổng hợp tồn kho đến tuần đó.
Nếu xử lý ứng dụng cho nhiều năm bạn có thể thêm field Nam để làm điều kiện, Nếu bạn làm cho công ty nước ngoài bạn có thể đặt lại tên Field, Table theo tiếng anh (mình dịch ra tiếng việt để tiện hướng dẫn)