กระทู้เก่าบอร์ด อ.Yeadram
1,921 4
URL.หัวข้อ /
URL
การวน Loop ใน Query
รบกวนทุกท่านครับ ข้อมูลของผมเป็นลักษณะนี้
DATE | ITEM | LOCATION | QTY | LOT | LOT_QTY
17/12/2014 | A | A01 | 50 | 20 | 3
17/12/2014 | B | A01 | 15 | 10 | 2
โดย LOT_QTY = QTY/LOT แล้วปัดขึ้น
ผมต้องการนำข้อมูล จาก Query นี้ มาทำให้เป็นอีก Query ดังนี้
DATE | ITEM | LOCATION | QTY | LOT | LOT_QTY | S_QTY
17/12/2014 | A | A01 | 50 | 20 | 3 | 20
17/12/2014 | A | A01 | 50 | 20 | 3 | 20
17/12/2014 | A | A01 | 50 | 20 | 3 | 10
17/12/2014 | B | A01 | 15 | 10 | 2 | 10
17/12/2014 | B | A01 | 15 | 10 | 2 | 5
โดย S_QTY = เศษส่วน QTY/LOT จากวนลูป จนครบ ของ QTY
ผมมือใหม่มาก ได้รับมอบหมายงานมาโดยจำเป็น ขอบคุณมากครับ
DATE | ITEM | LOCATION | QTY | LOT | LOT_QTY
17/12/2014 | A | A01 | 50 | 20 | 3
17/12/2014 | B | A01 | 15 | 10 | 2
โดย LOT_QTY = QTY/LOT แล้วปัดขึ้น
ผมต้องการนำข้อมูล จาก Query นี้ มาทำให้เป็นอีก Query ดังนี้
DATE | ITEM | LOCATION | QTY | LOT | LOT_QTY | S_QTY
17/12/2014 | A | A01 | 50 | 20 | 3 | 20
17/12/2014 | A | A01 | 50 | 20 | 3 | 20
17/12/2014 | A | A01 | 50 | 20 | 3 | 10
17/12/2014 | B | A01 | 15 | 10 | 2 | 10
17/12/2014 | B | A01 | 15 | 10 | 2 | 5
โดย S_QTY = เศษส่วน QTY/LOT จากวนลูป จนครบ ของ QTY
ผมมือใหม่มาก ได้รับมอบหมายงานมาโดยจำเป็น ขอบคุณมากครับ
4 Reply in this Topic. Dispaly 1 pages and you are on page number 1
2 @R19947
ถ้าจะสร้างโดยใช้คิวรี่ คงต้องใช้การสร้างอีกตารางขึ้นมาเทียบค่ากันเพื่อสร้างเรคคอร์ดซ้ำแทนการ Loop ประมาณนี้ครับ
1. ให้สร้างตารางใหม่ขึ้นมา โดยสมมุติใช้ชื่อ Tb_Piece โดยในตารางให้สร้างฟิลด์ชื่อ aSum กำหนด Data Type เป็น Number ไม่ต้องมี primarykey แต่ให้สร้าง index (Yes (No Duplicates)) ที่ฟิลด์ aSum
2. ให้ป้อนตัวเลขเรียงตั้งแต่ 1,2,3…,ค่าสูงสุดของฟิลด์ LOT_QTY ที่คิดว่าจะใช้มากสุดไม่เกินนั้น(จากตัวอย่างคือ 10 จะสร้างเป็นร้อยเป็นพันเผื่อไว้ก็ได้)
-Tb_Piece-
| aSum |
|----------|
| 1 |
| 2 |
| 3 |
| 4 |
| 5 |
| 6 |
| 7 |
| 8 |
| 9 |
| 10 |
----------
3. สร้างคิวรี่ใหม่ โดยนำเข้าตารางข้อมูลจริง สมมุติชื่อ Table1 และตาราง Tb_Piece มาสร้างเงื่อนไขเพื่อทำเรคคอร์ดซ้ำตามจำนวน โดยเขียน SQL statement ดังนี้:
------------------------------------------------------------
SELECT Table1.*,
-Int(-([QTY]/[LOT])) AS LOT_QTY,
IIf([QTY]>=[LOT]*[aSum],[LOT],[QTY] Mod [LOT]) AS S_QTY
FROM Table1, Tb_Piece
WHERE (-Int(-([QTY]/[LOT])))>=[Tb_Piece].[aSum]
ORDER BY Table1.ITEM, Tb_Piece.aSum;
------------------------------------------------------------
ปรับใช้ดูครับ
1. ให้สร้างตารางใหม่ขึ้นมา โดยสมมุติใช้ชื่อ Tb_Piece โดยในตารางให้สร้างฟิลด์ชื่อ aSum กำหนด Data Type เป็น Number ไม่ต้องมี primarykey แต่ให้สร้าง index (Yes (No Duplicates)) ที่ฟิลด์ aSum
2. ให้ป้อนตัวเลขเรียงตั้งแต่ 1,2,3…,ค่าสูงสุดของฟิลด์ LOT_QTY ที่คิดว่าจะใช้มากสุดไม่เกินนั้น(จากตัวอย่างคือ 10 จะสร้างเป็นร้อยเป็นพันเผื่อไว้ก็ได้)
-Tb_Piece-
| aSum |
|----------|
| 1 |
| 2 |
| 3 |
| 4 |
| 5 |
| 6 |
| 7 |
| 8 |
| 9 |
| 10 |
----------
3. สร้างคิวรี่ใหม่ โดยนำเข้าตารางข้อมูลจริง สมมุติชื่อ Table1 และตาราง Tb_Piece มาสร้างเงื่อนไขเพื่อทำเรคคอร์ดซ้ำตามจำนวน โดยเขียน SQL statement ดังนี้:
------------------------------------------------------------
SELECT Table1.*,
-Int(-([QTY]/[LOT])) AS LOT_QTY,
IIf([QTY]>=[LOT]*[aSum],[LOT],[QTY] Mod [LOT]) AS S_QTY
FROM Table1, Tb_Piece
WHERE (-Int(-([QTY]/[LOT])))>=[Tb_Piece].[aSum]
ORDER BY Table1.ITEM, Tb_Piece.aSum;
------------------------------------------------------------
ปรับใช้ดูครับ
3 @R19949
คุณ TTT ขอบคุณมากนะครับ
ผมจะลองทำดูได้ผลอย่างไรจะเข้ามารายงานให้ทราบนะครับ
ขอบคุณมากเลยครับ
ผมจะลองทำดูได้ผลอย่างไรจะเข้ามารายงานให้ทราบนะครับ
ขอบคุณมากเลยครับ
4 @R19950
คุณ TTT ครับ
ทำได้แล้วครับ ขอบพระคุณมากจริงๆ ครับ
ทำได้แล้วครับ ขอบพระคุณมากจริงๆ ครับ
Time: 0.4625s
DATE | ITEM | LOCATION | QTY | LOT |
--------------------------------------------------------------------
17/12/2014 | A | A01 | 50 | 20 |
17/12/2014 | B | A01 | 15 | 10 |
--------------------------------------------------------------------
- คุณคิวรี่ฟิลด์ LOT_QTY ขึ้นมาด้วยการใช้สูตร
LOT_QTY = [QTY] / [LOT] (มีเศษให้ปัดขึ้นเป็นจำนวนเต็ม)
ได้คิวรี่แบบนี้
DATE | ITEM | LOCATION | QTY | LOT | LOT_QTY |
------------------------------------------------------------------------------------
17/12/2014 | A | A01 | 50 | 20 | 3 |
17/12/2014 | B | A01 | 15 | 10 | 2 |
------------------------------------------------------------------------------------
- แล้วอยากให้สร้างเรคคอร์ดซ้ำตามค่าของฟิลด์ LOT_QTY
- แถมสร้างฟิลด์ใหม่ชื่อ S_QTY โดยแสดงการตัดค่าระหว่างฟิดล์ LOT ตัดออกจากฟิลด์ QTY แบบนี้
DATE | ITEM | LOCATION | QTY | LOT | LOT_QTY | S_QTY |
-----------------------------------------------------------------------------------------------
17/12/2014 | A | A01 | 50 | 20 | 3 | 20 |
17/12/2014 | A | A01 | 50 | 20 | 3 | 20 |
17/12/2014 | A | A01 | 50 | 20 | 3 | 10 |
17/12/2014 | B | A01 | 15 | 10 | 2 | 10 |
17/12/2014 | B | A01 | 15 | 10 | 2 | 5 |
-----------------------------------------------------------------------------------------------
ใช่ป่าวครับ