แสดงกระทู้

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.


Topics - ฺBall

หน้า: [1]
1
ห้อง MS Access / Stock Cards
« เมื่อ: 03 มิ.ย. 63 , 16:35:55 »
สวัสดีครับ เรียนสอบถามเรื่อง การทำ stock cards ครับ  :question:
ผมได้พยายามทำ ทำยอดยกมา ตาม youtube ของ อาจารย์ท่านนี้ครับ

แต่ข้อมูลของผมมีมากกว่าใน youtube ครับเลยได้ผลลัพธ์ ไม่เหมือนเท่าไรครับ
ตอนนี้ผมทำแล้วติดอยู่2เรื่องครับ
ผลลัพธ์ที่ต้องการ (ชื่อลูกค้า กับ ห้าง ไม่ได้ใช้ตัวย่ออย่างเดียวกับ ใน File access ที่แนบมานะครับ ดังนั้น ชื่อลูกค้า กับ ห้างจะไม่ตรงกันครับ) 


1.การยกยอดมาไม่เรียงลำดับก่อนหลังครับ และ ยอดคงเหลือ ก็ไม่ตรงครับ
ผมยกตัวอย่างสินค้า 1รายการก่อนแล้วกันนะครับ เป็นสินค้า F ที่มียอดยก วันที่ 30/10/2019 จำนวน 63,650 พอมาวันที่ 1/11/2019 ยอดยกมาไม่เรียงกัน ตามภาพที่แนบมาครับ และดูเหมือนว่ายอดยกมาแต่ละบรรทัดจะไม่ได้ยกมาตามที่ควรจะเป็นครับ(การคำนวนผิดพลาดครับ) ผมได้เพิ่ม Seq สำหรับรันเลขให้แต่ละแถวมีตัวเลขไม่เหมือนกัน จะได้นำมาเรียงลำดับได้ดีขึ้นครับ (แต่เหมือนว่าจะไม่ได้ผลครับ T.T)ผมเขียนbalanceตามนี้ครับ

Balance: (SELECT nz(Sum([IN]))+nz(Sum([INLC]))+nz(Sum([INBrunch]))-nz(Sum([OUT]))-nz(Sum([OUTBrunch])) FROM [Qry_INOUT] AS T1 WHERE [Qry_INOUT].[Date] >= T1.[Date] AND [Qry_INOUT].[ProdCode] = T1.[ProdCode] AND nz([Qry_INOUT].[Seq]) >= nz(T1.[Seq]) AND nz([Qry_INOUT].[Customer]) >= nz(T1.[Customer]))





ps. ตัวย่อที่ใช้ใน Access ใน queries
ิBalance = ยอดยกมา
CarryBalance = ยอดยกมาเดือนที่แล้ว
INLC=รับเข้า นน.L/C
INBrunch = รับจากสาขา
OW= นน.เกิน (ไม่มีผลต่อการยกยอด-คงเหลือครับ ในที่นี้เราจะไม่นำมาคำนวนครับ)
OUTBrunch = ส่งสาขา
OUT = จำนวน
BalanceEnd = คงเหลือ

2.Report ขึ้น#Error ครับ ผมจะทำให้เป็น group สินค้ากันครับ ได้ใช้ Select*From (...) as Stockcards; สำหรับทำ report ในการทำ group สินค้าครับ
ผมได้แนบรูปของ file excel ที่ผมต้องการมาในนี้ด้วยครับ


ผมได้แนบfile access มาด้วยครับ
รบกวนผู้รู้ช่วยแนะนำด้วยนะครับ
ขอบคุณมากๆครับ




2
สอบถามครับ ข้อมูลของผมจะมีรายการสินค้าซ้ำกันทุกวันและมีมากกว่า1ลูกค้าที่ชื้อสินค้าชนิดเดียวกันอย่างเช่น สินค้า A ชื้อมากกว่า 1 ครั้ง แต่คนละลูกค้ากันครับ เวลาทำยกยอดคงเหลือมา จะนำยอดคงเหลือของวันก่อนมาเป็นยอดยกหรือรายการก่อนหน้าของแต่ละรายการ
ผมได้สร้าง query เข้า กับ Query ออก และนำมา left join และ right join แล้วนำมา UNION กันครับ
หลังจากนั้นก็สร้างquery ยกยอด ตามนี้ครับ
ยกยอด: (SELECT nz(Sum([IN]))-nz(Sum([OUT])) FROM [Qry_INOUT] AS T1 WHERE [Qry_INOUT].[วันที่] > T1.[วันที่] AND [Qry_INOUT].[รหัสสินค้า] = T1.[รหัสสินค้า])
เมื่อผมทำอย่างนี้แล้วผลจะเป็ตามตารางข้างล่างครับ
วันที่                 ชื่อลูกค้า               รหัสสินค้า                ชื่อสินค้า               ยกยอด                   IN                 OUT        คงเหลือ
31/1/2020                                     1                           A                          0                  100                 0             100
1/2/2020         ลูกค้า  A                  1                           A                      100                    0                  10           90
1/2/2020         ลูกค้า  B                   1                          A                      100                    0                  10           90
บรรทัดแรกเป็นสินค้าA เป็นคงเหลือของสินเดือน ม.ค.20 แล้วนำมาเป็นยกยอดของเดือน ก.พ.20 ครับ
จะเห็นได้ว่ายอดยกมาของทั้งสองรายการของวันที่ 1/2/2020 ยกมาเท่ากันคือ 100 ครับ ทำให้คงเหลือของทั้งสองรายการมีจำนวนเท่ากันครับ ทั้งที่จริง ยกยอดของลูกค้าB ควรจะเป็น 90ครับ และนำมาลบกับ OUT จะได้ 80ครับ
ไม่ทราบว่าพอจะมีทางแก้ไขการยกยอดให้ตรงตามที่กล่าวมาได้หรือเปล่าครับ?
ขอบคุณมากครับ

หน้า: [1]