- Tham gia
- 14/6/06
- Bài viết
- 1,137
- Được thích
- 2,297
- Nghề nghiệp
- Tư vấn giải pháp bán lẻ
Đồng ý với ptm0412, ngay khi viết bài đó đã thấy vô lý và sửa lại code rồi (xem đoạn quote ở dưới). Nhưng ngại edit lại bài chưa sửa lại.
- 2 dòng màu xanh là tổng phát sinh tăng, tổng phát sinh giảm về giá trị
- 1 dòng màu đỏ là giá trị tồn cuối
Tuy nhiên, nếu viết như ở dưới thì vẫn có trường hợp sai (mặc dù hy hữu). Mọi người thử đoán xem?
Nhưng mà có lẽ đấy là cách 1. Cách 2 sử lý giống như MinhLev đã nói (trước đó thì hơi lăn tăn 1 chút vì định chuyển sang kỳ sau). "Tiêu diệt" luôn BalanceAmt (nếu <> 0) ngay mỗi lần BalanceQty = 0 vào giá vốn của hàng xuất cuối cùng. Cách đó là an toàn nhất (vì dù sao cách làm tròn là khá nguy hiểm, chỉ bất đắc dĩ mới dùng thôi).
- 2 dòng màu xanh là tổng phát sinh tăng, tổng phát sinh giảm về giá trị
- 1 dòng màu đỏ là giá trị tồn cuối
Tuy nhiên, nếu viết như ở dưới thì vẫn có trường hợp sai (mặc dù hy hữu). Mọi người thử đoán xem?
strSQL = "SELECT " & lngWorkingPeriod_ID & " AS ID, " & _
"StoreID, " & _
"ProductID, " & _
lngWorkingYear & " AS WorkingYear, " & _
lngWorkingMonth & " AS WorkingMonth, " & _
"SUM(BOP_Qty) AS BOP_Qty, " & _
"SUM(BOP_Amt) AS BOP_Amt, " & _
"SUM(AIP_Qty_Inc) AS AIP_Qty_Inc, " & _
"ROUND(SUM(AIP_Amt_Inc), 0) AS AIP_Amt_Inc, " & _
"SUM(AIP_Qty_Dec) AS AIP_Qty_Dec, " & _
"ROUND(SUM(AIP_Amt_Dec), 0) AS AIP_Amt_Dec, " & _
"(SUM(ISNULL(BOP_Qty,0)) + SUM(ISNULL(AIP_Qty_Inc,0)) - SUM(ISNULL(AIP_Qty_Dec,0))) AS EOP_Qty, " & _
"ROUND(SUM(ISNULL(BOP_Amt,0)) + SUM(ISNULL(AIP_Amt_Inc,0)) - SUM(ISNULL(AIP_Amt_Dec,0)), 0) AS EOP_Amt " & vbCrLf
Nhưng mà có lẽ đấy là cách 1. Cách 2 sử lý giống như MinhLev đã nói (trước đó thì hơi lăn tăn 1 chút vì định chuyển sang kỳ sau). "Tiêu diệt" luôn BalanceAmt (nếu <> 0) ngay mỗi lần BalanceQty = 0 vào giá vốn của hàng xuất cuối cùng. Cách đó là an toàn nhất (vì dù sao cách làm tròn là khá nguy hiểm, chỉ bất đắc dĩ mới dùng thôi).
Lần chỉnh sửa cuối: