กระทู้เก่าบอร์ด อ.Yeadram
3,574 12
URL.หัวข้อ /
URL
Write conflict ชอบขึ้น
ทำอย่างไรไม่ให้ msg box ที่ชื่อว่า Write conflict แสดงครับ มันจะแสดงตอนที่เราแก้ไขข้อมูลแล้วใส่ข้อมูลเหมือนเดิมนะครับ
12 Reply in this Topic. Dispaly 1 pages and you are on page number 1
1 @R03425
ข้อความเต็มๆคืออะไร
2 @R03426
This record has been changed by another user since you started editing it. If you save the record, you will overwrite the changes the other user made.
Copying the changes to the clipboard will let you look at the values the other user entered, and then paste your changes back in if you decide to make changes.
แล้วก็จะมีปุ่มให้เราเลือก 2 ปุ่ม คือ Copy to Clipboard , Drop Changes ครับ
Copying the changes to the clipboard will let you look at the values the other user entered, and then paste your changes back in if you decide to make changes.
แล้วก็จะมีปุ่มให้เราเลือก 2 ปุ่ม คือ Copy to Clipboard , Drop Changes ครับ
3 @R03427
Error นี้เกิดเพราะพบว่า ในช่วงเวลาระหว่างที่เรามีเรคอร์ดนั้นอยู่ในมือ จนถึงขณะที่เรากำลังอัพเดทเรคอร์ดนั้น เรคอร์ดเดียวกันนี้ได้ถูกคนอื่น (หรืออาจเป็นโปรแกรมอื่น, ฟอร์มอื่น หรือprocedure อื่นบนเครื่องเราเองก็ได้) อัพเดทไปเรียบร้อยแล้ว Error นี้เป็นการเตือนให้ทราบว่าสิ่งที่เรามีอยู่ในมือนั้น มันเปลี่ยนไปแล้ว
ถ้าเป็นการใช้งานหลายคน และเป็นการอัพเดทเรคอร์ดจากบนหน้าฟอร์ม เราพอจะลดการเกิด error ประเภทนี้ำได้โดยกำหนด Record Locks property ของฟอร์มเป็น Edited Record
แต่ถ้าไม่มีคนอื่นใช้งาน มันก็มักเกิดจากการที่เราเขียนโปรแกรมให้อัพเดทเรคอร์ดนั้น แต่ในขณะเดียวกันเราก็ทำบางสิ่งที่เป็นการอัพเดทเรคอร์ดนั้นบนหน้าฟอร์มโดยไม่ได้ตั้งใจไปด้วยพร้อมๆกัน
ลองไปตรวจเช็คว่าเป็นกรณีไหนนะครับ
ถ้าเป็นการใช้งานหลายคน และเป็นการอัพเดทเรคอร์ดจากบนหน้าฟอร์ม เราพอจะลดการเกิด error ประเภทนี้ำได้โดยกำหนด Record Locks property ของฟอร์มเป็น Edited Record
แต่ถ้าไม่มีคนอื่นใช้งาน มันก็มักเกิดจากการที่เราเขียนโปรแกรมให้อัพเดทเรคอร์ดนั้น แต่ในขณะเดียวกันเราก็ทำบางสิ่งที่เป็นการอัพเดทเรคอร์ดนั้นบนหน้าฟอร์มโดยไม่ได้ตั้งใจไปด้วยพร้อมๆกัน
ลองไปตรวจเช็คว่าเป็นกรณีไหนนะครับ
4 @R03429
เป็นแบบกรณีที่สองครับ คือ ไม่มีคนอื่นใช้งานครับผม แล้วทีนี้ผมต้องแก้ไขตรงไหนหรอครับ
5 @R03430
มีเขียนโค้ดในการอัพเดตข้อมูลหรือไม่ ถ้ามี โค้ดอยู่ใน event อะไร เอาโค้ดมาดูหน่อย
6 @R03431
Private Sub cmdPost_Click()
Dim sID, sContractNo
sID = Forms![CC-StockRemove]![inv_StockRemove].Form![txtproamount]
sContractNo = Forms![CC-StockRemove]![inv_StockRemove].Form![product_id]
DoCmd.SetWarnings False
SQL = "update inv_products set qty = " & sID & " where (inv_products.name='" & sContractNo & "')"
DoCmd.RunSQL SQL
End Sub
คืออันนี้จะเป็นการอัพเดต stock สินค้าครับ
Dim sID, sContractNo
sID = Forms![CC-StockRemove]![inv_StockRemove].Form![txtproamount]
sContractNo = Forms![CC-StockRemove]![inv_StockRemove].Form![product_id]
DoCmd.SetWarnings False
SQL = "update inv_products set qty = " & sID & " where (inv_products.name='" & sContractNo & "')"
DoCmd.RunSQL SQL
End Sub
คืออันนี้จะเป็นการอัพเดต stock สินค้าครับ
7 @R03433
1) ปุ่ม cmdPost อยู่ในฟอร์ม [CC-StockRemove] หรือในซับฟอร์ม หรือฟอร์มอื่น
2) ที่บอกว่า "มันจะแสดงตอนที่เราแก้ไขข้อมูลแล้วใส่ข้อมูลเหมือนเดิม" หมายความว่า ถ้าไม่ได้ใส่ข้อมูลเหมือนเดิม แล้วมันจะไม่มี error หรือว่ายังไง
3) การแก้ไขข้อมูล หมายถึงแก้ไขบนซับฟอร์มของ [CC-StockRemove] หรือว่าที่ไหน
2) ที่บอกว่า "มันจะแสดงตอนที่เราแก้ไขข้อมูลแล้วใส่ข้อมูลเหมือนเดิม" หมายความว่า ถ้าไม่ได้ใส่ข้อมูลเหมือนเดิม แล้วมันจะไม่มี error หรือว่ายังไง
3) การแก้ไขข้อมูล หมายถึงแก้ไขบนซับฟอร์มของ [CC-StockRemove] หรือว่าที่ไหน
8 @R03439
คุณช่วยอธิบายลำดับเหตุการณ์หน่อยครับว่า กดอะไร คีย์อะไรสำหรับเรคอร์ดนั้นๆ ตั้งแต่เริ่มแก้ไขจนมันเกิด error เช่น
1) ป้อนแก้ไขในช่องใดช่องหนึงบนฟอร์ม/ซับฟอร์มชื่อ ...
2) คลิกปุ่ม cmdPost
3) กลับมาตลิกที่เรคอร์ดนั้นๆ หรือคลิกที่อื่น
1) ป้อนแก้ไขในช่องใดช่องหนึงบนฟอร์ม/ซับฟอร์มชื่อ ...
2) คลิกปุ่ม cmdPost
3) กลับมาตลิกที่เรคอร์ดนั้นๆ หรือคลิกที่อื่น
9 @R03455
คือไม่ว่าผมจะใส่ข้อมูลตรงไหนก็ตามไม่ว่าจะเป็น บนฟอร์ม หรือ ซับฟอร์ม
ถ้าเกิดข้อมูลนั้นเป็นข้อมูลเดิม อย่างเช่น ราคาเดิมคือ 100 แล้วผมลบราคาเดิมออกแล้วใส่ค่าเข้าไปใหม่
ค่าราคาใหม่ก็คือ 100 หลังจากนั้นพอผมกดตรงไหนสักที่ เช่น ปุ่มบันทึก หรือ ช่องกรอกข้อความอันอื่น ...
ทีนี้ msgbox มันก็จะขึ้นมาเลยครับอาจารย์สันติสุข
ถ้าเกิดข้อมูลนั้นเป็นข้อมูลเดิม อย่างเช่น ราคาเดิมคือ 100 แล้วผมลบราคาเดิมออกแล้วใส่ค่าเข้าไปใหม่
ค่าราคาใหม่ก็คือ 100 หลังจากนั้นพอผมกดตรงไหนสักที่ เช่น ปุ่มบันทึก หรือ ช่องกรอกข้อความอันอื่น ...
ทีนี้ msgbox มันก็จะขึ้นมาเลยครับอาจารย์สันติสุข
10 @R03456
ช่วยตอบตรงตามคำถามด้วย
- ปุ่ม cmdPost อยู่ในฟอร์ม [CC-StockRemove] หรือในซับฟอร์ม หรือฟอร์มอื่น
- ปุ่ม cmdPost จะคลิกเมื่อไหร่ และเมื่อเทียบกับที่บอกว่า "...หลังจากนั้นพอผมกดตรงไหนสักที่..." ทำอย่างไหนก่อนกัน
- ปุ่ม cmdPost อยู่ในฟอร์ม [CC-StockRemove] หรือในซับฟอร์ม หรือฟอร์มอื่น
- ปุ่ม cmdPost จะคลิกเมื่อไหร่ และเมื่อเทียบกับที่บอกว่า "...หลังจากนั้นพอผมกดตรงไหนสักที่..." ทำอย่างไหนก่อนกัน
11 @R03471
- ปุ่ม cmdPost อยู่ในฟอร์ม [CC-StockRemove] หรือในซับฟอร์ม หรือฟอร์มอื่น
----อยู่ในฟอร์ม [CC-StockRemove] ครับ
- ปุ่ม cmdPost จะคลิกเมื่อไหร่ และเมื่อเทียบกับที่บอกว่า "...หลังจากนั้นพอผมกดตรงไหนสักที่..." ทำอย่างไหนก่อนกัน
----คลิกตอนเบิกสินค้าครับ ก่อนหลังไม่เกี่ยวกันเลยครับ
ที่ผมบอกว่า "...หลังจากนั้นพอผมกดตรงไหนสักที่..." คือตอนนี้มันเป็นไปทั้งโปรแกรมเลยครับ โดยไม่จำเป็นที่ผมต้องกดปุ่ม cmdPost เลยครับ
----อยู่ในฟอร์ม [CC-StockRemove] ครับ
- ปุ่ม cmdPost จะคลิกเมื่อไหร่ และเมื่อเทียบกับที่บอกว่า "...หลังจากนั้นพอผมกดตรงไหนสักที่..." ทำอย่างไหนก่อนกัน
----คลิกตอนเบิกสินค้าครับ ก่อนหลังไม่เกี่ยวกันเลยครับ
ที่ผมบอกว่า "...หลังจากนั้นพอผมกดตรงไหนสักที่..." คือตอนนี้มันเป็นไปทั้งโปรแกรมเลยครับ โดยไม่จำเป็นที่ผมต้องกดปุ่ม cmdPost เลยครับ
12 @R03472
พอคุณบอกว่า "โดยไม่จำเป็นที่ผมต้องกดปุ่ม cmdPost เลย" ผมบอกเลยว่า ผมไม่เคยเจอกรณีแบบนี้ เพราะอย่างที่ตอบไปแรกๆก็คือ ถ้าใช้คนเดียว ก็ต้องมีโค้ดอะไรสักอย่าง (ซึ่งผมเข้าใจทีแรกว่า คงเป็นโค้ดจาก cmdPost) ที่ทำงานอัพเดตเรคอร์ดเดียวกันกับที่แสดงบนหน้าจอ ทำงานไปพร้อมๆกันหรือใกล้เคียงกันกับเวลาที่เราอัพเดตข้อมูลผ่านฟอร์ม
ดังนั้น คุณมีโค้ดอะไรอื่นๆอีกหรือเปล่า เช่น โค้ดใน Form_BeforeUpdate ของซับฟอร์ม จุดสำคัญคือโค้ดเหล่านี้ต้องเป็นโค้ดที่ทำงานก่อนที่ข้อมูลบนซับฟอร์มจะถูกอัพเดทจากการที่เราคลิกไปที่อื่น
ดังนั้น คุณมีโค้ดอะไรอื่นๆอีกหรือเปล่า เช่น โค้ดใน Form_BeforeUpdate ของซับฟอร์ม จุดสำคัญคือโค้ดเหล่านี้ต้องเป็นโค้ดที่ทำงานก่อนที่ข้อมูลบนซับฟอร์มจะถูกอัพเดทจากการที่เราคลิกไปที่อื่น
Time: 0.3394s