เรื่อง IIf และ ผลบวกสะสมครับ
กระทู้เก่าบอร์ด อ.Yeadram

 1,617   10
URL.หัวข้อ / URL
เรื่อง IIf และ ผลบวกสะสมครับ

คือผมมีคิวรีดังนี้ครับ

Week            Available             Commulative       
1                         15                           15
2                          -5                           10
3                          -5                            5
4                          -5                            0              
5                          -5                            -5
6                          -5                            -10
7                          -5                            -15
8                          -15                          -30
9                          -15                           .
10                        -15                           .
11                        -15                           .
12                        -15                           .

เนื่องจากมี lot size ทำการเก็บค่าอยู่ที่เทเบิ้ล อื่นซึ่งมีเพียง 1 record
เพราะผมต้องการที่จะให้ lot size มันเปลี่ยนได้ตลอดครับ

ผลลัพที่ผมต้องการคือ
Week                           Total                  Lot size
1                                    15                 
2                                    10
3                                    5                            
4                                    30   (5-5+30)            30
5                                    25
6                                    20
7                                    5     
8                                    20   (5-15+30)          30
9                                    5
10                                  20                             30
11                                  5
12                                  20                             30

โดยที่ผมเขียนคำสั่ง sql ดังนี้ครับ

SELECT MPS3.Week, MPS3.Available2, (SELECT Sum(MPS3.Available2) From MPS3 Where MPS3.Week <= B.Week) AS CumulativeTotal, MPS2.[Lot Size]
FROM MPS2 INNER JOIN (MPS3 AS B INNER JOIN MPS3 ON B.Week=MPS3.Week) ON (MPS2.Week=B.Week) AND (MPS2.Week=MPS3.Week)
ORDER BY MPS3.Week;

ไม่ทราบผมต้องใช้คำสั่ง IIf แบบไหนจึงจะได้ผลลัพท์ตามที่ต้องการครับ

ขอบพระคุณครับ


10 Reply in this Topic. Dispaly 1 pages and you are on page number 1

1 @R12704
ตอนนี้ผมคิดโค้ดได้มาแล้วครับ แต่มันได้ผลไม่ร้อยเปอร์เซ็นต์ครับ

ผมเขียนแบบนี้ครับ



แล้วมันได้ผลลัพธ์

Week             Available        Lot Size
1                        15                  30
2                         10                 30
3                         5                   30
4                         30                 30
5                         25                 30
6                         20                 30
7                         5                   30
8                         -10               30
9                         -25               30
10                      -40               30
11                      -55               30
12                        -70               30

คือผมไม่ทราบว่าทำไม่มันไม่ทำตามเงื่อนไขครับ พอถึง -10 แทนที่มันจะบวก 30

เป็น 20 มันกลับไม่บวกครับ แต่กลับ ลบสะสมไปอีก ช่วยผมแก้ไขหน่อยนะครับขอบคุณครับ
2 @R12705
ขอโทษนะครับโค้ดมันวางไม่ได้ รูปก็เล็ก ผมเลยอัพไฟล์มาแทนครับ

http://www.mediafire.com/download.php?8uucr6giqgzrgh4
3 @R12706
อ๋อผมเข้าใจแล้วครับ คือ ตอนนี้มันทำแค่ ลูปเดียว มันไม่วนลูปครับ ต้องทำอย่างไงดีครับ
4 @R12708
ช่วยเหลือผมด้วยนะครับ
5 @R12713
ต้องทำยังไงครับมันถึงจะวนลูปต่อไปเรื่อยๆ

IIf((SELECT Sum(MPS3.Available2) As Available2 From MPS3 Where MPS3.Week <= B.Week)>1,(SELECT Sum(MPS3.Available2) As Available2 From MPS3 Where MPS3.Week <= B.Week),(SELECT Sum(MPS3.Available2) As Available2 From MPS3 Where MPS3.Week <= B.Week)+MPS2.[Lot Size]) AS Available

ปัญหาของมันน่าจะมาจาก ผมบวก lot size เข้า ซึ่ง lot size ไม่ได้เกิดมาจากผลบวกสะสม
6 @R12717
ไม่ว่างอ่านรายละเอียดครับ แต่เห็นว่าพยายามดี
ลองดูที่ http://www.thai-access.com/yeadram_view.php?topic_id=2723
ว่าใกล้เคียงหรือเปล่า
แล้วว่างจะกลับมาเยี่ยมครับ
7 @R12719
ไม่ค่อยใกล้เคียงครับอาจารย์ ขอบคุณครับยังไงอาจารย์ก็ช่วยแวะมาดูให้ผมด้วยนะครับ ยังแก้ไม่ได้เลยขอบคุณครับ
8 @R12724
อ่านแล้วไม่ค่อยเข้าใจ ของ ตัวอย่างข้อมูลแต่ละ table ด้วยดีกว่าครับ
9 @R12727
ผมสร้าง table มา 2 table

อันแรกชื่อ Order มี 7 ฟิลด์ ประกอบไปด้วย Week(มี 12 week),Forecast(สร้างฟอร์มขึ้นมาเพื่อใช้ป้อนค่า),

Order(สร้างฟอร์มขึ้นมาเพื่อใช้ป้อนค่าเช่นกัน),Available,ATP,MPS,On hand

จากนั้นสร้างอีก Table นึงขึ้นมาเทเบิ้ลนี้ใช้แค่ประกอบการคำนวณครับ ใช้ชื่อว่า MPS2

โดยมีอยู่ 3 ฟิลด์ Week(ที่สร้างขึ้นมาเพื่อให้มันมี 12 จะได้สร้างquery แล้วjoinได้ครับ),Beginning Inventory,Lot Size

วิธีคำนวณที่ผมต้องการเป็นดังนี้ครับ Lot Size = 30

Week     Forecast       Order       Available        ATP                  MPS       On hand
1               5                  5             15(20-5)        10(20-5+3+2)                   20(Beginning Inventory)
2               5                  3             10                   
3               5                  2              5
4               5                  0              30(5-5+30)     30                    30
5               5                  0              25
6               5                  0              20
7               15               0               5
8               15               0              20(5-15+30)   30                    30
9               15               0               5
10              15               0              20(5-15+30)   30                    30
11              15               0               5
12              15               0              20(5-15+30)   30                    30

จากนั้นผมจึงสร้างคิวรีชื่อ MPS3 โดยเชื่อมเขตข้อมูลดังนี้
SELECT [Order Demand].Week, [Order Demand].Forecast, [Order Demand].Order, [MPS2].[Beginning Inventory]-[Order Demand].[Forecast] AS Available2, [Order Demand].ATP, [Order Demand].MPS, [Order Demand].[On Hand], MPS2.[Beginning Inventory]
FROM MPS2 INNER JOIN [Order Demand] ON MPS2.Week=[Order Demand].Week;

แล้วได้
Week     Forecast       Order       Available2     ATP    MPS   Beginning Inventory
1               5                  5             15                                           20                 
2               5                  3             -5                                           0
3               5                  2             -5                                           0
4               5                  0             -5                                           0
5               5                  0             -5                                           0
6               5                  0             -5                                           0
7               15               0             -15                                          0
8               15               0             -15                                          0
9               15               0             -15                                          0
10              15               0             -15                                          0
11              15               0             -15                                          0
12              15               0             -15                                          0

ผมเอา Forecast - Beginning Inventory ก่อนนะครับ

หลังจากนั้นผมก็สร้างมาอีกหนึ่งคิวรี ชื่อ MPS4
โดยใช้โค้ดแบบที่อัพโหลดให้ดูด้านบน
แล้วได้
Week           Available2     Available        Lot Size
1                         15               15                   30                 
2                         -5               10                   30
3                         -5                  5                   30
4                         -5                 30                  30      
5                         -5                 25                  30       
6                         -5                 20                  30     
7                         -15                 5                  30       
8                         -15               -10                 30       
9                         -15               -25                 30       
10                      -15               -40                 30       
11                      -15               -55                 30          
12                      -15               -70                 30

ซึ่งผมอยากได้ผลลัพธ์เหมือนด้านบนแต่ผมไม่รู้ว่าที่ผมทำถูกรึปล่าว ผมกะไว้ว่าเมื่อคำนวณค่าได้

ค่อยอัพเดทค่าไปใส่รวมกันครับแต่มันติปัญหาตรงที่ผมไม่ค่อยเชี่ยวชาญเท่าไหร่

รบกวนอาจารย์แนะนำผมหน่อยนะครับ ขอบพระคุณครับ       
10 @R12739
พอจะมีวิธีไหมครับอาจารย์
@ ประกาศใช้งานเว็บบอร์ดใหม่ => บอร์ดเรียนรู้ Access สำหรับคนไทย
แล้วจะใส่ลิ้งอ้างอิงมาที่โพสต์เก่านี้หรือไม่ก็ตามสะดวกครับ
Time: 0.2659s