กระทู้เก่าบอร์ด อ.Yeadram
1,830 11
URL.หัวข้อ /
URL
จัดลำดับคิวงาน
สอบถามอาจารย์ทุกท่านครับ
เราสามารถจะสามารถเขียนโปรแกรม ใช้ในการวางแผนของลำดับคิวงานได้ไหมครับ
ตัวอย่างเช่น
ลำดับงานที่ ชื่องาน คิวงาน
1 "ชื่องาน" 0 (คืองานที่กำลังปฏิบัติอยู่)
2 "ชื่องาน " 1 (งานต่อไป)
3 "ชื่องาน" 2 (งานต่อไป)
4 "ชื่องาน" 3 (งานต่อไป)
ถ้าหากเราอยากจะจัดนำงานในลำดับที่ 3 ขึ้นมา เป็น ลำดับที่ 1 (ประมานว่างานด่วนมาทำก่อนโดยจะเป็นงานต่องานที่เรากำลังปฏิบัติงานอยู่ )
โดยที่งานในลำดับที่ 1 ก่อนหน้านี้ จะขยับลงมา เป็นงาน ที่ 2 และ 3 ตามลำดับ
ประมานนี้ครับ พอจะมีวิธีแนะนำไหมครับ
โดยประเภทของข้อมูล (ชื่องาน) เป็น Text
เราสามารถจะสามารถเขียนโปรแกรม ใช้ในการวางแผนของลำดับคิวงานได้ไหมครับ
ตัวอย่างเช่น
ลำดับงานที่ ชื่องาน คิวงาน
1 "ชื่องาน" 0 (คืองานที่กำลังปฏิบัติอยู่)
2 "ชื่องาน " 1 (งานต่อไป)
3 "ชื่องาน" 2 (งานต่อไป)
4 "ชื่องาน" 3 (งานต่อไป)
ถ้าหากเราอยากจะจัดนำงานในลำดับที่ 3 ขึ้นมา เป็น ลำดับที่ 1 (ประมานว่างานด่วนมาทำก่อนโดยจะเป็นงานต่องานที่เรากำลังปฏิบัติงานอยู่ )
โดยที่งานในลำดับที่ 1 ก่อนหน้านี้ จะขยับลงมา เป็นงาน ที่ 2 และ 3 ตามลำดับ
ประมานนี้ครับ พอจะมีวิธีแนะนำไหมครับ
โดยประเภทของข้อมูล (ชื่องาน) เป็น Text
11 Reply in this Topic. Dispaly 1 pages and you are on page number 1
1 @R23960
ถ้าเป็นผม เลขที่คิวงานที่เก็บจริง ไม่จำเป็นต้องเพิ่มทีละ 1 เหมือนอย่างที่ต้องการแสดงออกมา อาจจะเพิ่มทีละ 10 หรือ 100 หรือเท่าไหร่ก็ได้แล้วแต่ว่าโอกาสเกิดการเปลี่ยนแปลงคิวงานจะมีบ่อยสักแค่ไหน ตย.เช่น ลำดับงานที่ 1 มีเลขคิวงานเป็น 10, ..., ลำดับที่ 4 เป็น 40 อย่างกรณีที่ที่คุณต้องการ ก็แค่เปลี่ยนเลขคิวงานจาก 30 มาเป็นค่าสัก 5 ก็ได้ ถ้าต่อไปจะเอางานที่ 4 มาเป็นลำดับแรกแทนอีกที ก็เปลี่ยนจาก 40 มาเป็นค่า 2 ก็ได้ ดังนั้นเมื่อเรียงตามคิวงานแล้ว ยังไงก็ได้ลำดับตามต้องการ ส่วนการที่จะให้แสดงเลขออกมาเป็น 0,1,2,3 นั้น ใช้วิธีตามลิงค์นี้ก็ได้ครับ http://www.thai-access.com/yeadram_view.php?topic_id=2730
2 @R23961
เรียน อ.สันติสุขครับ
ผมเข้าใจเหมือนกับที่อาจารย์บอกไว้ แต่ติดปัญหาอยู่อย่างหนึ่งครับ
ลำดับคิวงานอาจมีมากถึง 40คิว เป็นต้น หากต้องการคิวงานที่40 มาทำก่อนโดยให้อยู่ที่คิวงานที่2 อาจารย์บอกว่าให้เปลี่ยนจากคิวงานที่40 เป็น2 สามารถทำได้ครับ แต่คิวงาน2จะไม่เป็น3อัตโนมัติครับ และคิวงานที่2จะมี2รายการ(ผมน่าจะเข้าใจถูกนะครับ) จากนั้นก็ต้องเปลี่ยนเลขคิวที่2เดิม มาเป็นคิวที่3 แล้วต้องมาไล่ใส่คิวงานตั้งแต่ 3-40 ใหม่หมดครับ
กรณีของคุณสุวัฒน์ ต้องการให้คิวงานที่ถูกคิวอื่นมาแทนที่แล้ว เรียงลำดับใหม่ทั้งหมดอัตโนมัติ โดยที่เราไม่ต้องเปลี่ยนคิวที่เหลือเอง พอจะมีวิธีไหมครับ
ผมเข้าใจเหมือนกับที่อาจารย์บอกไว้ แต่ติดปัญหาอยู่อย่างหนึ่งครับ
ลำดับคิวงานอาจมีมากถึง 40คิว เป็นต้น หากต้องการคิวงานที่40 มาทำก่อนโดยให้อยู่ที่คิวงานที่2 อาจารย์บอกว่าให้เปลี่ยนจากคิวงานที่40 เป็น2 สามารถทำได้ครับ แต่คิวงาน2จะไม่เป็น3อัตโนมัติครับ และคิวงานที่2จะมี2รายการ(ผมน่าจะเข้าใจถูกนะครับ) จากนั้นก็ต้องเปลี่ยนเลขคิวที่2เดิม มาเป็นคิวที่3 แล้วต้องมาไล่ใส่คิวงานตั้งแต่ 3-40 ใหม่หมดครับ
กรณีของคุณสุวัฒน์ ต้องการให้คิวงานที่ถูกคิวอื่นมาแทนที่แล้ว เรียงลำดับใหม่ทั้งหมดอัตโนมัติ โดยที่เราไม่ต้องเปลี่ยนคิวที่เหลือเอง พอจะมีวิธีไหมครับ
3 @R23962
โค้ดเปลี่ยนลำดับคิวงานจาก a ไปเป็น b
DoCmd.RunSQL "update เทเบิล set ฟิลด์คิวงาน = -1 where ฟิลด์คิวงาน = " + a
DoCmd.RunSQL "update เทเบิล set ฟิลด์คิวงาน = ฟิลด์คิวงาน " + iif(a>b,"+,"-") + " 1 where ฟิลด์คิวงาน between " + a + " and " + b
DoCmd.RunSQL "update เทเบิล set ฟิลด์คิวงาน = " + b + " where ฟิลด์คิวงาน = -1"
4 @R23963
ขออนุญาตครับ อาจารย์สันติสุข
ผมอ่านดู แล้วสนใจวิธีของอาจารย์มาก มันสั้นดี (ผมคิดไม่ได้)
เลยลองเอาไปทดสอบดู พบว่า มีจุดที่อาจารย์พิมพ์ตกด้วย
และตามที่ได้ทดสอบใน VBA ของ access 2010 ของเครื่องผมแล้ว มัน error ตรงตัวต่อสายอักขระ ที่อาจารย์ใช้เครื่องหมาย + เป็นตัวต่อข้อความ
ผมเลยเปลี่ยนเป็นเครื่องหมาย อัมเพอร์แซนด์ แทน ลองแล้วได้ผลดีครับ
โค้ดที่ผมเอาไปทดสอบ และปรับแก้แล้ว จะลบทิ้งเลย ก็เสียดาย
ขอเอามาโพสต์ต่อจากของอาจารย์นะครับ
ผมอ่านดู แล้วสนใจวิธีของอาจารย์มาก มันสั้นดี (ผมคิดไม่ได้)
เลยลองเอาไปทดสอบดู พบว่า มีจุดที่อาจารย์พิมพ์ตกด้วย
และตามที่ได้ทดสอบใน VBA ของ access 2010 ของเครื่องผมแล้ว มัน error ตรงตัวต่อสายอักขระ ที่อาจารย์ใช้เครื่องหมาย + เป็นตัวต่อข้อความ
ผมเลยเปลี่ยนเป็นเครื่องหมาย อัมเพอร์แซนด์ แทน ลองแล้วได้ผลดีครับ


โค้ดที่ผมเอาไปทดสอบ และปรับแก้แล้ว จะลบทิ้งเลย ก็เสียดาย
ขอเอามาโพสต์ต่อจากของอาจารย์นะครับ
Function ReOrder(a As Long, b As Long)
DoCmd.RunSQL "update เทเบิล set ฟิลด์คิวงาน = -1 where ฟิลด์คิวงาน = " & a
DoCmd.RunSQL "update เทเบิล set ฟิลด์คิวงาน = ฟิลด์คิวงาน " & IIf(a > b, "+", "-") & " 1 where ฟิลด์คิวงาน between " & a & " and " & b
DoCmd.RunSQL "update เทเบิล set ฟิลด์คิวงาน = " & b & " where ฟิลด์คิวงาน = -1"
End Function
5 @R23964
ใช่ ผมขาด double quote ไปตัวนึง ขอบคุณครับ
6 @R23973
ขอบคุณอาจารย์ทั้ง 2 ท่านมากๆ เลยคับ เดี๋ยวผมจะลองทำดูนะครับ
ขอบคุณมากๆครับ
ขอบคุณมากๆครับ
7 @R23974
สอบถามอีกนิครับ ถ้าเป็น Ver. 2007 ละครับ จะติดปัยหาอะไรไหม
8 @R23977
รบกงนขอเป็นไฟล์ตัวอย่างได้มั้ยคับ เอาไปใส่แล้ว งงๆ (ยังมือใหม่อยู่คับ)
9 @R23978
คุณ yeadram ผมรบกวนขอเป็นไฟล์ตัวอย่างได้ไหมครับ เอาไปใส่แล้ว งงๆ (ยังมือใหม่อยู่ครับ)
10 @R23981
สมมุติหน้าฟอร์มคุณมีเท็กซ์บ็อกซ์ 2 ตัวชื่อ a และ b สำหรับป้อนลำดับคิวงานที่ต้องการเปลี่ยนจากลำดับไหน(a) ไปไหน(b) และมีปุ่มที่กดชื่อว่า c เพื่อให้คลิกแล้วทำการเปลี่ยน
ใน event On Click ของ c ให้เลือก Event Procedure แล้วใส่โค้ด DoCmd.... ทั้ง 3 บรรทัดของ อ.Yeadram ลงไปเท่านั้นเองครับ (โดยที่ไม่ต้องมีบรรทัด Function และ End Function)
ใน event On Click ของ c ให้เลือก Event Procedure แล้วใส่โค้ด DoCmd.... ทั้ง 3 บรรทัดของ อ.Yeadram ลงไปเท่านั้นเองครับ (โดยที่ไม่ต้องมีบรรทัด Function และ End Function)
11 @R23994
ผมทำคลิปแนะนำให้ดูนะครับทั้งแบบที่ อ. ทั้งสองท่านแนะนำ และแบบที่ผมเคยทำ
แบบที่อาจารย์แนะนำในกระทู้
แบบที่ผมเคยทำ
ลองปรับใช้ดูครับ
แบบที่อาจารย์แนะนำในกระทู้
แบบที่ผมเคยทำ
ลองปรับใช้ดูครับ
Time: 0.4725s