กระทู้เก่าบอร์ด อ.Yeadram
        
           2,140   9		  
          
					  
		    URL.หัวข้อ / 
		    URL
        
        เงื่อนไข between ครับ      
    
      คือผมมีปัญหาเรื่อง Between #25/7/2554 6:00:00# And #25/7/2554 14:00:00# ผมต้องการทำรายงานเเสดงผลยอดผลิตตั้งเเต่ 6โมงเช้าถึง14.00 น. เเต่ถ้าเเสดงเงื่อนไขแบบที่ได้กล่าวนั้นมันจะโชว์ตั้งเเต่ 6 7 8 9 10 11 12 13 14 เเต่ผมต้องการให้มันสรุปเเค่ 6.00-14.00 น. ภายในบรรทัดเดียวเเล้วได้ผลรวมเท่ากับเงื่่อนไขข้างต้น ผมต้องใช้คำสั่งแบบไหนครับ
รบกวน อ.สุเทพ เเละ User thai-access ช่วยเเนะนำให้ทีครับ
    
    
  รบกวน อ.สุเทพ เเละ User thai-access ช่วยเเนะนำให้ทีครับ
				9 Reply in this Topic. Dispaly 1  pages and you are on page number 1 
				
        
    2 @R10596    
        
  
      ขอบคุณคับ ท่าน weezaa ที่ช่วยตอบ เเต่ผมก็ยังไม่ค่อยเข้าใจ ผมก็ยังทำไม่ได้อยู่ดีอ่ะครับพึ่งเคยทำผมจะพิมพ์ลักษณะงานแบบให้ดูนะครับ
TIME ชื่อเครื่อง สินค้า ยอด
21/7/2554 6:00:00 AA production 10
21/7/2554 7:00:00 AA production 10
21/7/2554 8:00:00 AA production 10
21/7/2554 9:00:00 AA production 10
21/7/2554 14:00:00 AA production 10
ผลรวม 50
นี้คือที่ผมทำได้
**เเต่ที่ผมต้องการให้มันโชว์คือ**
21/7/2557 6:00:00-14:00:00 AA production 50
เพราะเครื่องจักรผลิตเเบ่งเป็น3ก่ะครับผลิต 24ชม.ครับ
ผมจะ query ยังไงดีครับรบกวนช่วยเเนะนำด้วยครับ
ปล. ขอโทษทีครับ อ.สุภาพ พอดีมือใหม่หัดเข้าบอร์ด(เขินเลยผม)
    
  TIME ชื่อเครื่อง สินค้า ยอด
21/7/2554 6:00:00 AA production 10
21/7/2554 7:00:00 AA production 10
21/7/2554 8:00:00 AA production 10
21/7/2554 9:00:00 AA production 10
21/7/2554 14:00:00 AA production 10
ผลรวม 50
นี้คือที่ผมทำได้
**เเต่ที่ผมต้องการให้มันโชว์คือ**
21/7/2557 6:00:00-14:00:00 AA production 50
เพราะเครื่องจักรผลิตเเบ่งเป็น3ก่ะครับผลิต 24ชม.ครับ
ผมจะ query ยังไงดีครับรบกวนช่วยเเนะนำด้วยครับ
ปล. ขอโทษทีครับ อ.สุภาพ พอดีมือใหม่หัดเข้าบอร์ด(เขินเลยผม)
        
    3 @R10597    
        
  
      ต้องสร้าง field อีก 1 field เพื่อแสดง วันที่เวลาตามที่คุณต้องการ
TimeShow: Min([Time]) & " - " & Format(Max([Time]),"Short Time")
ด้านล่างของ field นี้ให้เลือกคำว่า expression ไม่ใช่ groupby ตามค่า default
คุณควรเปลี่ยนชื่อ field "time" เป็นชื่ออื่น
ทั้งนี้คุณต้องแน่ใจนะว่า วันที่ของคุณในแต่ละกะจะเป็นวันเดียวกันเสมอไป
format ก็ทำให้ดูเป็นตัวอย่าง
ทั้งหลายทั้งปวงคุณอาจต้องปรับแต่งเอาเองอีกนิดหน่อย เช่น
shorttime คุณต้องเปลี่ยนเป็น hh:mm:ss ถ้าคุณต้องการแสดงระดับวินาที
    
    
  TimeShow: Min([Time]) & " - " & Format(Max([Time]),"Short Time")
ด้านล่างของ field นี้ให้เลือกคำว่า expression ไม่ใช่ groupby ตามค่า default
คุณควรเปลี่ยนชื่อ field "time" เป็นชื่ออื่น
ทั้งนี้คุณต้องแน่ใจนะว่า วันที่ของคุณในแต่ละกะจะเป็นวันเดียวกันเสมอไป
format ก็ทำให้ดูเป็นตัวอย่าง
ทั้งหลายทั้งปวงคุณอาจต้องปรับแต่งเอาเองอีกนิดหน่อย เช่น
shorttime คุณต้องเปลี่ยนเป็น hh:mm:ss ถ้าคุณต้องการแสดงระดับวินาที
        
    4 @R10600    
        
  
      - เปลี่ยนชื่อฟิลด์ของคุณจากคำว่า TIME เป็น mcTime (คำว่า Time เป็นคำสงวนของระบบ)
- รวบรวมคำตอบและความเห็นของคุณ weeza และคุณ Nova พร้อมทั้งความต้องการของคุณมะนาว เอามาเขียนเป็น SQL statement ได้ดังนี้
select xx, [ชื่อเครื่อง], [สินค้า], sum([ยอด]) as Total
from table1
where mcTime between [ระบุวัน-เวลาเริ่มต้น ตามรูปแบบ dd/mm/yyyy hh:mm:ss] and [ระบุวัน-เวลาสิ้นสุด ตามรูปแบบ dd/mm/yyyy hh:mm:ss]
group by xx, [ชื่อเครื่อง], [สินค้า];
****ให้แทนที่ xx ด้วย format(cdate([ระบุวัน-เวลาเริ่มต้น ตามรูปแบบ dd/mm/yyyy hh:mm:ss]),"dd/mm/yyyy hh:mm:ss") & " - " & format(cdate([ระบุวัน-เวลาสิ้นสุด ตามรูปแบบ dd/mm/yyyy hh:mm:ss]),"dd/mm/yyyy hh:mm:ss")
1) ให้สร้างคิวรี่ใหม่ 1 ตัว เปิดมุมมอง SQL
2) เอา statement (แทนที่คำให้เรียบร้อย) นี้ไปวาง
3) เปลี่ยนมุมมองเป็น มุมมองแผ่นข้อมูล ถ้าไม่มีปัญหาอะไร ให้ทำข้อ 4) - 5)
4) เปลี่ยนมุมมองเป็น มุมมองออกแบบ เพื่อศึกษาทำความเข้าใจ
5) บันทึกคิวรี่นี้ไว้ใช้งานครั้งต่อไป
ถ้าในข้อ 3) มีปัญหาให้ตรวจสอบชื่อฟิลด์ต่างๆ ของคุณ ว่าเขียนหรือปรับเปลี่ยนประยุกต์ได้ถูกต้องทุกจุดหรือไม่ ถ้าปรับเปลี่ยนแล้วให้กลับไปเริ่ม ข้อ 1) ใหม่อีกครั้ง
ถ้ายังพบปัญหาให้แจ้งปัญหามาใหม่อีกครั้งครับ
    
    
  - รวบรวมคำตอบและความเห็นของคุณ weeza และคุณ Nova พร้อมทั้งความต้องการของคุณมะนาว เอามาเขียนเป็น SQL statement ได้ดังนี้
select xx, [ชื่อเครื่อง], [สินค้า], sum([ยอด]) as Total
from table1
where mcTime between [ระบุวัน-เวลาเริ่มต้น ตามรูปแบบ dd/mm/yyyy hh:mm:ss] and [ระบุวัน-เวลาสิ้นสุด ตามรูปแบบ dd/mm/yyyy hh:mm:ss]
group by xx, [ชื่อเครื่อง], [สินค้า];
****ให้แทนที่ xx ด้วย format(cdate([ระบุวัน-เวลาเริ่มต้น ตามรูปแบบ dd/mm/yyyy hh:mm:ss]),"dd/mm/yyyy hh:mm:ss") & " - " & format(cdate([ระบุวัน-เวลาสิ้นสุด ตามรูปแบบ dd/mm/yyyy hh:mm:ss]),"dd/mm/yyyy hh:mm:ss")
1) ให้สร้างคิวรี่ใหม่ 1 ตัว เปิดมุมมอง SQL
2) เอา statement (แทนที่คำให้เรียบร้อย) นี้ไปวาง
3) เปลี่ยนมุมมองเป็น มุมมองแผ่นข้อมูล ถ้าไม่มีปัญหาอะไร ให้ทำข้อ 4) - 5)
4) เปลี่ยนมุมมองเป็น มุมมองออกแบบ เพื่อศึกษาทำความเข้าใจ
5) บันทึกคิวรี่นี้ไว้ใช้งานครั้งต่อไป
ถ้าในข้อ 3) มีปัญหาให้ตรวจสอบชื่อฟิลด์ต่างๆ ของคุณ ว่าเขียนหรือปรับเปลี่ยนประยุกต์ได้ถูกต้องทุกจุดหรือไม่ ถ้าปรับเปลี่ยนแล้วให้กลับไปเริ่ม ข้อ 1) ใหม่อีกครั้ง
ถ้ายังพบปัญหาให้แจ้งปัญหามาใหม่อีกครั้งครับ
        
    5 @R10602    
        
  
      ขอบคุณ ท่าน nova กับ yeadram มาครับ คือ ตารางผมมีชื่อดังนี้
ชื่อตาราง PDT_DATA ครับ
TIME_STAMP PDT_NAME MODEL_IT Actual
21/7/2554 6:00:00 AA production 10
21/7/2554 7:00:00 AA production 10
21/7/2554 8:00:00 AA production 10
21/7/2554 9:00:00 AA production 10
21/7/2554 14:00:00 AA production 10
ผลรวม 50
ผมจะต้อง query ยังไงดีอ่ะครับประยุกต์ตามที่ท่าน yeadram เเล้วมันก็ไม่ได้อ่ะครับ ผมพึ่งจับ access เป็นครั้งเเรกเลยไม่ค่อยรู้เรื่องยังไงกก็รบกวนหน่อยนะครับ
    
  ชื่อตาราง PDT_DATA ครับ
TIME_STAMP PDT_NAME MODEL_IT Actual
21/7/2554 6:00:00 AA production 10
21/7/2554 7:00:00 AA production 10
21/7/2554 8:00:00 AA production 10
21/7/2554 9:00:00 AA production 10
21/7/2554 14:00:00 AA production 10
ผลรวม 50
ผมจะต้อง query ยังไงดีอ่ะครับประยุกต์ตามที่ท่าน yeadram เเล้วมันก็ไม่ได้อ่ะครับ ผมพึ่งจับ access เป็นครั้งเเรกเลยไม่ค่อยรู้เรื่องยังไงกก็รบกวนหน่อยนะครับ
        
    6 @R10604    
        
  
      เปิด query ในมุมมอง SQL แล้ว copy code นี้ไปวาง
SELECT PDT_Data.Pdt_Name, PDT_Data.Model_IT, Sum(PDT_Data.Actual) AS SumOfNoMachine, Min([Time_Stamp]) & " - " & Format(Max([Time_Stamp]),"Short Time") AS TimeShow
FROM PDT_Data
WHERE (((PDT_Data.Time_Stamp) Between #1/21/2011 6:0:0# And #1/21/2011 14:0:0#))
GROUP BY PDT_Data.Pdt_Name, PDT_Data.Model_IT;
    
    
  SELECT PDT_Data.Pdt_Name, PDT_Data.Model_IT, Sum(PDT_Data.Actual) AS SumOfNoMachine, Min([Time_Stamp]) & " - " & Format(Max([Time_Stamp]),"Short Time") AS TimeShow
FROM PDT_Data
WHERE (((PDT_Data.Time_Stamp) Between #1/21/2011 6:0:0# And #1/21/2011 14:0:0#))
GROUP BY PDT_Data.Pdt_Name, PDT_Data.Model_IT;
        
    7 @R10605    
        
  
      ขอบคุณมากครับ คุณ Nova สำหรับ query ใช้ได้เเล้วครับ เเล้วถ้าผมต้องการ ซ้อน between ให้โชว์ช่วงเวลา 3 กะ ล่ะครับ เช่น
 เเล้วถ้าผมต้องการ ซ้อน between ให้โชว์ช่วงเวลา 3 กะ ล่ะครับ เช่น
TIME_STAMP PDT_NAME MODEL_IT Actual
21/7/2554 6:00:00-14:00 AA production 50
21/7/2554 14:00:00-22:00 AA production 50
21/7/2554 22:00:00-23:45:00 AA production 50
ผมจะสามารถซ้อน between ได้ไหมครับรบกวนช่วยเเนะนำด้วยนะครับขอบคุณครับ
    
   เเล้วถ้าผมต้องการ ซ้อน between ให้โชว์ช่วงเวลา 3 กะ ล่ะครับ เช่น
 เเล้วถ้าผมต้องการ ซ้อน between ให้โชว์ช่วงเวลา 3 กะ ล่ะครับ เช่น
TIME_STAMP PDT_NAME MODEL_IT Actual
21/7/2554 6:00:00-14:00 AA production 50
21/7/2554 14:00:00-22:00 AA production 50
21/7/2554 22:00:00-23:45:00 AA production 50
ผมจะสามารถซ้อน between ได้ไหมครับรบกวนช่วยเเนะนำด้วยนะครับขอบคุณครับ
        
    8 @R10606    
        
  
      เอา query มา UNION กัน โดยเปลี่ยนเงื่อนไขเวลาในบรรทัด WHERE
SELECT....FROM...
WHERE....วันเวลาตามเงื่อนไขที่1
GROUP BY.....
UNION
SELECT....FROM...
WHERE....วันเวลาตามเงื่อนไขที่2
GROUP BY.....
SELECT....FROM...
WHERE....วันเวลาตามเงื่อนไขที่3
GROUP BY.....;
จริงๆแล้วเงื่อไขควรอยู่ในรูปตัวแปร แต่ผมไม่รู้องค์ประกอบอื่นๆ
ยังไงก็ลองปรับเปลี่ยนดูนะครับ
    
    
  SELECT....FROM...
WHERE....วันเวลาตามเงื่อนไขที่1
GROUP BY.....
UNION
SELECT....FROM...
WHERE....วันเวลาตามเงื่อนไขที่2
GROUP BY.....
SELECT....FROM...
WHERE....วันเวลาตามเงื่อนไขที่3
GROUP BY.....;
จริงๆแล้วเงื่อไขควรอยู่ในรูปตัวแปร แต่ผมไม่รู้องค์ประกอบอื่นๆ
ยังไงก็ลองปรับเปลี่ยนดูนะครับ
        
    9 @R10622    
        
    
      ขอบคุณมากครับ ท่าน Nova ที่เเนะนำทุกขั้นตอนเลย 
    
    
   
    
      Time: 0.0605s
    
      
		
แล้วก็ใส่เงื่อนไขตามนั้น
ปล. อ.สุเทพ ไม่มีนะครับ