ขอปรึกษา Code กรอกข้อมูลจากที่เดียวแต่ให้บันทึกลงหลายๆ Record ที่มี ID เหมือนกัน



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

10 ธ.ค. 62 , 21:15:49
อ่าน 327 ครั้ง

Tatchawin

สวัสดีครับ จะรบกวนปรึกษาครับ Code ครับ โดยผมต้องการทำ Form แก้ไขประวัติพนง.โดยทำ Form ใหญ่ 1 Form และ SubForm ย่อย 2 Subform
1. Subform1(บน) เอาไว้ใช้เปน Selector ตามแต่ละ WorkID
2. Subform2(ล่าง) เอาไว้ใช้แสดงรายละเอียดของจาก SubForm1 ซึ่งการแก้ไขข้อมูล จะแก้ไขผ่าน Subform นี้ครับ
โดยทั้งสอง Subform ใช้ Queries ตัวเดียวกัน

ความต้องการของผมคือ หากกรอก TerminatedDate ที่ Record ใด Record หนึ่ง ก็ให้ค่า TerminatedDate ที่กรอกนั้น ถูก Insert ลงไปยัง Record อื่นๆที่มี ContractorID เดียวกันให้หมด ผมควรจะเขียนโค้ดอย่างไรดีครับ

ปล. โค้ดที่ผมเขียนคือ ตามด้านล่างนี้ครับ ซึ่งไม่ได้ผลเลยครับ
รบกวนทุกท่านด้วยครับ ขอบคุณมากครับ

Private Sub TerminatedDate_Click()
    DoCmd.RunSQL "SELECT GenerateID FROM tblWork WHERE GenerateID'" = Me.GenerateID
    DoCmd.RunSQL "INSERT INTO tblWork([TerminatedDate])" & _
        "Values ('" & Me.TerminatedDate & "');"
    End If
End Sub

« แก้ไขครั้งสุดท้าย: 11 ธ.ค. 62 , 07:22:15 โดย Tatchawin »

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

11 ธ.ค. 62 , 08:23:49
ตอบกลับ #1

PNR

อ้างถึง
ความต้องการของผมคือ หากกรอก TerminatedDate ที่ Record ใด Record หนึ่ง ก็ให้ค่า TerminatedDate ที่กรอกนั้น ถูก Insert ลงไปยัง Record อื่นๆที่มี ContractorID เดียวกันให้หมด ผมควรจะเขียนโค้ดอย่างไรดีครับ

แก้ไขใหม่
น่าจะเป็น

โค๊ด: [Select]
Private Sub TerminatedDate_AfterUpdate()
Me.Dirty = False
DoCmd.SetWarnings False
DoCmd.RunSQL "UPDATE tblWork SET tblWork.TerminatedDate = [forms]![frmEditWork]![TerminatedDate] WHERE (((tblWork.ContractorID)=[forms]![frmEditWork]![ContractorID]));", dbFailOnError
DoCmd.SetWarnings True
End Sub

tblWork คือตารางที่เราจะอัพเดท By ContractorID ครับ
วิธีนี้ ถ้า ContractorID เดียวกัน ก็จะอัพเดทวันที่ให้ทั้งหมดทุกแถวครับ ไม่สนว่าจะมี WorkID กี่ตัวครับ
« แก้ไขครั้งสุดท้าย: 11 ธ.ค. 62 , 09:01:17 โดย PNR »
เรียนเพื่อนสมาชิกและอาจารย์ทุกท่าน
ผมไม่ใช่อาจารย์และไม่ใช่ผู้ที่แตกฉานใน Access นะครับ
แค่ผู้หนึ่งที่แชร์ความรู้เท่าที่มี ถ้าหากอาจารย์ทุกท่านเห็นว่ายังไม่ถูกต้อง
กรุณาโพสตอบกระทู้ส่วนเนื้อหาที่น่าจะถูกต้องกว่าให้ด้วยเพื่อเป็นวิทยาทาน
 
โพสต์นี้ได้รับคำขอบคุณจาก: Tatchawin

11 ธ.ค. 62 , 09:13:14
ตอบกลับ #2

Tatchawin

อ้างถึง
ความต้องการของผมคือ หากกรอก TerminatedDate ที่ Record ใด Record หนึ่ง ก็ให้ค่า TerminatedDate ที่กรอกนั้น ถูก Insert ลงไปยัง Record อื่นๆที่มี ContractorID เดียวกันให้หมด ผมควรจะเขียนโค้ดอย่างไรดีครับ

แก้ไขใหม่
น่าจะเป็น

โค๊ด: [Select]
Private Sub TerminatedDate_AfterUpdate()
Me.Dirty = False
DoCmd.SetWarnings False
DoCmd.RunSQL "UPDATE tblWork SET tblWork.TerminatedDate = [forms]![frmEditWork]![TerminatedDate] WHERE (((tblWork.ContractorID)=[forms]![frmEditWork]![ContractorID]));", dbFailOnError
DoCmd.SetWarnings True
End Sub

tblWork คือตารางที่เราจะอัพเดท By ContractorID ครับ
วิธีนี้ ถ้า ContractorID เดียวกัน ก็จะอัพเดทวันที่ให้ทั้งหมดทุกแถวครับ ไม่สนว่าจะมี WorkID กี่ตัวครับ

ขอบคุณมากครับ แต่ผมใช้ Queries ชื่อ qryWork เป็น Record Source ของ Form frmEditWork
ถ้าผมเปลี่ยนจาก tblWork เปน qryWork ได้ไหมครับ เพราะผมใช้ Queries ในการ Generate ContractorID ขึ้นมาครับ

 

11 ธ.ค. 62 , 09:33:01
ตอบกลับ #3

PNR

น่าจะได้นะครับ มันจะไปเช็คค่า ContractorID จากคิวรี่ นั้นและ อัพเดท Field TerminatedDate ตาม  ContractorID ครับ
แต่ TerminatedDate และ WorkID ต้องเชื่อมกับตารางไรตารางนึงด้วยนะครับ

โค๊ด: [Select]
Private Sub TerminatedDate_AfterUpdate()
Me.Dirty = False
DoCmd.SetWarnings False
DoCmd.RunSQL "UPDATE qryWork SET qryWork.TerminatedDate = [forms]![frmEditWork]![TerminatedDate] WHERE (((qryWork.ContractorID)=[forms]![frmEditWork]![ContractorID]));", dbFailOnError
DoCmd.SetWarnings True

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

11 ธ.ค. 62 , 11:57:20
ตอบกลับ #4

สันติสุข

ขอแทรกหน่อยครับ ดูแล้วเหมือนว่า TerminatedDate จะขึ้นกับ Contractor เพียงอย่างเดียว ไม่ได้ขึ้นกับ WorkID เลย ดังนั้น TerminatedDate ควรไปอยู่ในเทเบิลของ Contractor มากกว่าหรือไม่
ช่วยพกถุงผ้า/ถุงพลาสติกใช้แล้วไปซื้อของเพื่อลดการใช้พลาสติก ขยะ รักษาสิ่งแวดล้อม และไม่ให้ภาวะโลกร้อนวิกฤติเร็วขึ้นกว่านี้
ช่วยคลิกโฆษณาข้างล่างนี้ เพื่อสนับสนุนเวปบอร์ดด้วยครับ
:nice day:
 
โพสต์นี้ได้รับคำขอบคุณจาก: oong2521, PNR, Tatchawin


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