Update ข้อมูล หลาย Record พร้อมกัน



0 สมาชิก และ 1 บุคคลทั่วไป กำลังดูหัวข้อนี้

21 ก.ย. 63 , 11:45:11
อ่าน 216 ครั้ง

pondniizz

Update ข้อมูล หลาย Record พร้อมกัน
« เมื่อ: 21 ก.ย. 63 , 11:45:11 »
รบกวนสอบถามคะ

เราสามารถ update ข้อมูลหลายๆ record ได้พร้อมๆกันไหมคะ

เช่น มีข้อมูล 1ชุด ฃ
ตารางรายการสินค้า

รายการสินค้า       ยอดคงเหลือ
AA                      5
BB                      6
CC                      7

แล้วสร้างตารางสำหรับดึงข้อมูลมาทำรายการเบิกโดยจะเบิกพร้อมๆกันมากกว่า 1 รายการ โดยสร้างเป็น continuous forms

โดยให้แสดง

รายการสินค้า        ยกมา        จำนวนเบิก       คงเหลือ
AA                     5                1                4
ฺฺBB                     6                2                4

แล้วกดปุ้มบันทึก ให้ยอดคงเหลือจากรายการเบิก ไปอัพเดทในยอดคงเหลือในตารางรายการสินค้า โดยอัพเดทพร้อมกันทั้ง2 รายการ โดยการกดปุ่มเพียงครั้งเดียว
รายละเอียดแบบนี้สามารถทำได้มั้ยคะ รบกวนขอคำแนะนำด้วยคะ


 
โพสต์นี้ได้รับคำขอบคุณจาก: SakDa, oraaoi

22 ก.ย. 63 , 14:30:09
ตอบกลับ #1

สันติสุข

: Update ข้อมูล หลาย Record พร้อมกัน
« ตอบกลับ #1 เมื่อ: 22 ก.ย. 63 , 14:30:09 »
ทำได้ครับ โดยการใช้คำสั่ง UPDATE sql statement โดยสมมุติชื่อต่างๆดังนี้

ตารางรายการสินค้า P
ฟิลด์รายการสินค้า ITEM
ฟิลด์ยอดคงเหลือ BALQTY

ตารางรายการเบิก I
ฟิลด์รายการสินค้า ITEM
ฟิลด์ยอดยกมา FWQTY
ฟิลด์จำนวนเบิก  ISSUEQTY
ฟิลด์ที่เป็นคีย์ที่ระบุได้ว่าเป็นรายการเบิกรายการนี้ PK เช่น เลขที่เบิก xxx

โค้ดพื้นฐานที่ใช้ก็คือ
โค๊ด: [Select]
CurrentDB.Execute "update [P] inner join [I] on [P].[ITEM] = [I].[ITEM] set [P].[BALQTY] = [I].[FWQTY] - [I].[ISSUEQTY] where [I].[PK] = xxx", dbFailOnError

หมายเหตุ :

- ถ้ายอดยกมา นำมาจากยอดคงเหลืออยู่แล้ว ก็สามารถใช้ set [P].[BALQTY] = [P].[BALQTY] - [I].[ISSUEQTY] แทนก็จะเหมาะสมกว่า

- ส่วน [I].[PK] = xxx หรือส่วนอื่นๆอีก อาจแตกต่างจากนี้ ขึ้นกับว่ามีฟิลด์อะไรบ้างที่ใช้ระบุว่าเป็นเอกสารการเบิกนี้ และค่าของมันมีประเภทข้อมูลตามที่ระบุในตารางว่าเป็น Text หรือ Number

ก่อนการทดสอบ ให้สำรองฐานข้อมูลก่อน เพราะผมไม่ได้ทดสอบโค้ดนี้และไม่รู้ระบบคุณ ถ้าเปลี่ยนแปลงแล้วผิดพลาด เป็นความรับผิดชอบคุณเองนะครับ และจะได้เอาตัวสำรองมาใช้
« แก้ไขครั้งสุดท้าย: 22 ก.ย. 63 , 17:41:43 โดย สันติสุข »
ช่วยพกถุงผ้า/ถุงพลาสติกใช้แล้วไปซื้อของเพื่อลดการใช้พลาสติก ขยะ รักษาสิ่งแวดล้อม และไม่ให้ภาวะโลกร้อนวิกฤติเร็วขึ้นกว่านี้
ช่วยคลิกโฆษณาข้างล่างนี้ เพื่อสนับสนุนเวปบอร์ดด้วยครับ
:nice day:
 
โพสต์นี้ได้รับคำขอบคุณจาก: SakDa, oraaoi

26 ก.ย. 63 , 16:22:08
ตอบกลับ #2

oraaoi

  • สมาชิกไท.Access
  • กระทู้: 19

  • ขอบคุณ ไท.Access

    • ดูรายละเอียด

: Update ข้อมูล หลาย Record พร้อมกัน
« ตอบกลับ #2 เมื่อ: 26 ก.ย. 63 , 16:22:08 »
ทำได้ครับ โดยการใช้คำสั่ง UPDATE sql statement โดยสมมุติชื่อต่างๆดังนี้

ตารางรายการสินค้า P
ฟิลด์รายการสินค้า ITEM
ฟิลด์ยอดคงเหลือ BALQTY

ตารางรายการเบิก I
ฟิลด์รายการสินค้า ITEM
ฟิลด์ยอดยกมา FWQTY
ฟิลด์จำนวนเบิก  ISSUEQTY
ฟิลด์ที่เป็นคีย์ที่ระบุได้ว่าเป็นรายการเบิกรายการนี้ PK เช่น เลขที่เบิก xxx

โค้ดพื้นฐานที่ใช้ก็คือ
โค๊ด: [Select]
CurrentDB.Execute "update [P] inner join [I] on [P].[ITEM] = [I].[ITEM] set [P].[BALQTY] = [I].[FWQTY] - [I].[ISSUEQTY] where [I].[PK] = xxx", dbFailOnError

หมายเหตุ :

- ถ้ายอดยกมา นำมาจากยอดคงเหลืออยู่แล้ว ก็สามารถใช้ set [P].[BALQTY] = [P].[BALQTY] - [I].[ISSUEQTY] แทนก็จะเหมาะสมกว่า

- ส่วน [I].[PK] = xxx หรือส่วนอื่นๆอีก อาจแตกต่างจากนี้ ขึ้นกับว่ามีฟิลด์อะไรบ้างที่ใช้ระบุว่าเป็นเอกสารการเบิกนี้ และค่าของมันมีประเภทข้อมูลตามที่ระบุในตารางว่าเป็น Text หรือ Number

ก่อนการทดสอบ ให้สำรองฐานข้อมูลก่อน เพราะผมไม่ได้ทดสอบโค้ดนี้และไม่รู้ระบบคุณ ถ้าเปลี่ยนแปลงแล้วผิดพลาด เป็นความรับผิดชอบคุณเองนะครับ และจะได้เอาตัวสำรองมาใช้

อาจารย์สันติสุขคะ  รบกวนขอถามต่อจากกระทู้นี้ค่ะ คือของอ๋อยงานก็ลักษณะคล้ายๆ กันแต่  ชนิดของข้อมูลเป็น Yes/No ค่ะ  จะสามารถทำได้หรือเปล่าคะ
ลักษณะคือ : Field  =  Approved , Data Type = Yes/No 


ขอบคุณมากๆค่ะ



 

26 ก.ย. 63 , 18:09:28
ตอบกลับ #3

สันติสุข

: Update ข้อมูล หลาย Record พร้อมกัน
« ตอบกลับ #3 เมื่อ: 26 ก.ย. 63 , 18:09:28 »
ถ้าหมายถึงชื่อฟิลด์คือ Approved, ชื่อ Option Group คือ O, Checkbox Yes ที่ผูกอยู่ภายใน Option Group ตั้งค่าเป็น 1, No ตั้งค่าเป็นค่าอื่นๆที่ไม่ใช่ 1 

แต่ไม่รู้ว่า O คือค่าที่ต้องการอัพเดตลงเรคอร์ด หรือเป็นเงื่อนไขที่เลือกเรคอร์ดที่จะอัพเดต ถ้าเป็นกรณีแรก ก็จะได้โค้ดเป็นลักษณะ
โค๊ด: [Select]
CurrentDB.Execute "update [P] inner join [I] on [P].[ITEM] = [I].[ITEM] set [P].[Approved] = " & iif(Me.O=1, "TRUE", "FALSE") & " where [I].[PK] = xxx", dbFailOnError
ถ้ากรณีที่สอง ก็จะเป็น
โค๊ด: [Select]
CurrentDB.Execute "update [P] inner join [I] on [P].[ITEM] = [I].[ITEM] set [P].[BALQTY] = [I].[FWQTY] - [I].[ISSUEQTY] where [I].[PK] = xxx and Approved = " & iif(Me.O=1, "TRUE", "FALSE") , dbFailOnError
ช่วยพกถุงผ้า/ถุงพลาสติกใช้แล้วไปซื้อของเพื่อลดการใช้พลาสติก ขยะ รักษาสิ่งแวดล้อม และไม่ให้ภาวะโลกร้อนวิกฤติเร็วขึ้นกว่านี้
ช่วยคลิกโฆษณาข้างล่างนี้ เพื่อสนับสนุนเวปบอร์ดด้วยครับ
:nice day:
 
โพสต์นี้ได้รับคำขอบคุณจาก: sjs, oraaoi


บอร์ดเรียนรู้ Access สำหรับคนไทย