สอบถามเรื่องการ update ข้อมูลในตาราง



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

25 ม.ค. 61 , 09:03:30
อ่าน 1625 ครั้ง

prajak

รบกวนสอบถามครับ ตามรูปผมมีฟอร์มการเปิดPO ตรงช่อง Supplier เป็นcombo box ที่ lookup ข้อมูลมาจากตาราง supplier กรณีขณะที่กำลังเปิดPO ไม่มีชื่อ supplier ให้เลือก ผมจึงสร้าง ปุ่ม command button เพื่อเปิดฟอร์ม supplier ขึ้นมาเพื่อให้เพิ่มชื่อ supplierใหม่เข้าไป ปัญหามันมีอยู่ว่า หลังจากที่เราเพิ่ม supplier เสร็จแล้วปิดฟอร์มsupplierลงไป
แล้วมาคลิ๊ก dropdown ในช่องsupplier ของform PO มันจะไม่มีข้อมูลที่เราเพิ่มใหม่เข้ามา จะต้องทำการปิดฟอร์มก่อนแล้วเปิดขึ้นมาใหม่จึงจะเห็น เราสามารถทำยังไงได้บ้างครับ ให้มันมีรายการที่เราเพิ่มใหม่ขึ้นมาทันที โดยที่เราไม่ต้องปิดหน้า form เหตุผลเพื่อให้สะดวกต่อผู้ใช้ครับ


 

25 ม.ค. 61 , 10:22:30
ตอบกลับ #1

OddyWriter

> สอบถามเรื่องการ update ข้อมูลในตาราง
« ตอบกลับ #1 เมื่อ: 25 ม.ค. 61 , 10:22:30 »
ใช้คำสั่ง docmd.requery

แต่ต้องหาจุดที่วางเองนะครับ
กินร้อน ช้อนตัวเอง จานใครจานมัน ออกนอกบ้านใส่หน้ากากอนามัยหรือหน้ากากผ้า
 

25 ม.ค. 61 , 10:22:40
ตอบกลับ #2

tomkungz

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

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

> สอบถามเรื่องการ update ข้อมูลในตาราง
« ตอบกลับ #2 เมื่อ: 25 ม.ค. 61 , 10:22:40 »
หลังจากปิดฟอร์มเพิ่ม ผรม.ไป ให้ใช้คำสั่ง requery ตาราง ผรมครับ เช่น DoCmd.Requery "EmployeeList"

 

25 ม.ค. 61 , 11:23:20
ตอบกลับ #3

prajak

> สอบถามเรื่องการ update ข้อมูลในตาราง
« ตอบกลับ #3 เมื่อ: 25 ม.ค. 61 , 11:23:20 »
ยังไม่เข้าใจเลยครับ ว่าวางคำสั่งไว้ตรงไหน ลองแล้วยังไม่ได้ครับ รบกวนด้วยนะครับ

 

25 ม.ค. 61 , 11:43:19
ตอบกลับ #4

OddyWriter

> สอบถามเรื่องการ update ข้อมูลในตาราง
« ตอบกลับ #4 เมื่อ: 25 ม.ค. 61 , 11:43:19 »
ถ้า Combo Box ในฟอร์ม POH ของคุณ กำหนด Record Source จากตารางที่ใช้สร้างฟอร์มเพิ่ม Supplier ให้ใส่ docmd.requery ที่ on click ของ combobox ครับ ชัวร์สุด

กินร้อน ช้อนตัวเอง จานใครจานมัน ออกนอกบ้านใส่หน้ากากอนามัยหรือหน้ากากผ้า
 

25 ม.ค. 61 , 11:57:28
ตอบกลับ #5

prajak

> สอบถามเรื่องการ update ข้อมูลในตาราง
« ตอบกลับ #5 เมื่อ: 25 ม.ค. 61 , 11:57:28 »
ลองแล้วยังไม่ได้ครับ ไม่ทราบว่าถูกหรือเปล่า



 

25 ม.ค. 61 , 12:18:54
ตอบกลับ #6

OddyWriter

> สอบถามเรื่องการ update ข้อมูลในตาราง
« ตอบกลับ #6 เมื่อ: 25 ม.ค. 61 , 12:18:54 »
ลองกดปุ่ม f9 ดูว่าได้ไหมครับ
กินร้อน ช้อนตัวเอง จานใครจานมัน ออกนอกบ้านใส่หน้ากากอนามัยหรือหน้ากากผ้า
 

25 ม.ค. 61 , 12:51:36
ตอบกลับ #7

prajak

> สอบถามเรื่องการ update ข้อมูลในตาราง
« ตอบกลับ #7 เมื่อ: 25 ม.ค. 61 , 12:51:36 »
กด F9 แล้วได้ครับ ต้องใช้การกด f9เอา หรือว่าแก้ได้ครับ

 

25 ม.ค. 61 , 13:29:00
ตอบกลับ #8

OddyWriter

> สอบถามเรื่องการ update ข้อมูลในตาราง
« ตอบกลับ #8 เมื่อ: 25 ม.ค. 61 , 13:29:00 »
คือผมพยายามหลีกเลี่ยงคำสั่ง docmd sendkey f9 น่ะครับ เพราะมันมีผลให้การทำงานของ Numlock ผิดปกติ ถ้าจะเขียน Code ตรวจสอบสถานะของ Numlock ก็ได้ แต่วุ่นวายเพราะ 32 bit กับ 64 bit เขียนโค้ดต่างกันอีก

แนะนำว่าลองเปลี่ยน docmd.requery เป็น docmd.save ดูครับ ถ้าความเร็วในการทำงานอยู่ในช่วงที่รับได้ ก็ใช้ไป แต่ถ้าช้า แสดงว่ามีปัญหาในการวางระบบฐานข้อมูลแล้วล่ะ อาจต้องส่งมาให้ผมดูครับ


กินร้อน ช้อนตัวเอง จานใครจานมัน ออกนอกบ้านใส่หน้ากากอนามัยหรือหน้ากากผ้า
 

26 ม.ค. 61 , 15:34:01
ตอบกลับ #9

pizza_p

> สอบถามเรื่องการ update ข้อมูลในตาราง
« ตอบกลับ #9 เมื่อ: 26 ม.ค. 61 , 15:34:01 »
แก้จาก DoCmd.Requery เป็น Me.POVender.Requery แต่จริงๆ ไม่ค่อยแนะนำแบบนี้ใน click event เพราะมันจะทำการ Requery ทุกครั้งที่คลิกที่ combobox ซึ่งการ Requery มันใช้เวลาและทรัพยากรยิ่งถ้าข้อมูลมันเยอะมันจะมีอาการหน่วงให้เห็น

ผมแนะนำให้ทำที่ปุ่ม OpenForm ที่เปิดฟอร์มการเพิ่ม supplier เช่น

Private Sub OpenFormSupplier_Click()

DoCmd.OpenForm "SupplierForm", acNormal, , , , acDialog
Me.POVender.Requery

End Sub

การ OpenForm แบบ acDialog โปรแกรม Access จะรอจนกว่าเราทำงานเกี่ยวกับฟอร์มนั้นจนเสร็จสิ้นก่อน แล้วถึงจะรันคำสั่งบรรทัดถัดไปครับ ทำให้เวลาเราใส่ข้อมูลเสร็จปิดฟอร์ม Supplier แล้ว มันก็จะทำคำสั่งถัดไปคือ Me.POVender.Requery
« แก้ไขครั้งสุดท้าย: 26 ม.ค. 61 , 15:46:13 โดย pizza_p »

 

27 ม.ค. 61 , 15:28:44
ตอบกลับ #10

prajak

> > สอบถามเรื่องการ update ข้อมูลในตาราง
« ตอบกลับ #10 เมื่อ: 27 ม.ค. 61 , 15:28:44 »
แก้จาก DoCmd.Requery เป็น Me.POVender.Requery แต่จริงๆ ไม่ค่อยแนะนำแบบนี้ใน click event เพราะมันจะทำการ Requery ทุกครั้งที่คลิกที่ combobox ซึ่งการ Requery มันใช้เวลาและทรัพยากรยิ่งถ้าข้อมูลมันเยอะมันจะมีอาการหน่วงให้เห็น

ผมแนะนำให้ทำที่ปุ่ม OpenForm ที่เปิดฟอร์มการเพิ่ม supplier เช่น

Private Sub OpenFormSupplier_Click()

DoCmd.OpenForm "SupplierForm", acNormal, , , , acDialog
Me.POVender.Requery

End Sub

การ OpenForm แบบ acDialog โปรแกรม Access จะรอจนกว่าเราทำงานเกี่ยวกับฟอร์มนั้นจนเสร็จสิ้นก่อน แล้วถึงจะรันคำสั่งบรรทัดถัดไปครับ ทำให้เวลาเราใส่ข้อมูลเสร็จปิดฟอร์ม Supplier แล้ว มันก็จะทำคำสั่งถัดไปคือ Me.POVender.Requery
ผมว่าผมใช้การกด F9 ดีกว่าครับไม่ได้ลำบากมาก ลองทำตามที่แนะนำแล้วยังไม่ได้ครับ ขอบคุณมากนะครับ

 

27 ม.ค. 61 , 18:42:50
ตอบกลับ #11

TTT

> สอบถามเรื่องการ update ข้อมูลในตาราง
« ตอบกลับ #11 เมื่อ: 27 ม.ค. 61 , 18:42:50 »
ไม่รู้ว่าเข้าใจคำถามถูกหรือป่าวนะครับ
ถ้าต้องการ Requery ฟอร์มคนละฟอร์มหลังการ Update ตารางแล้ว ก็ให้ใช้คำสั่งอ้างที่ชื่อฟอร์มตัวเป้าหมายครับ เช่น
คำสั่งที่จะใส่ลงในปุ่มบนฟอร์ม supplier
- เมนฟอร์ม
Forms!ชื่อฟอร์มหลัก.Requery
- ชื่อคอนโทรลในฟอร์มหลัก
Forms!ชื่อฟอร์มหลัก.ชื่อคอนโทรล
- ซับฟอร์ม
Forms!ชื่อฟอร์มหลัก!ชื่อซับฟอร์ม.Form.Requery
- ชื่อคอนโทรลในซับฟอร์ม
Forms!ชื่อฟอร์มหลัก!ชื่อซับฟอร์ม.Form.ชื่อคอนโทรล.Requery

โดยเลือกใช้ดูว่าถ้า Requery เฉพาะตัวคอนโทรลเป้าหมายจะได้ผลลัพธ์ที่ต้องการหรือไม่ ถ้าไม่ค่อย Requery ทั้งฟอร์มแทน ทั้งนี้ขึ้นอยู่กับการออกแบบ

อะไรประมาณนี้ครับ
ฐานข้อมูลเป็นเรื่องใกล้ตัว ใครๆก็ทำฐานข้อมูลเองได้นะครับhttp://www.youtube.com/c/AccessCreator link
 

27 ม.ค. 61 , 19:28:37
ตอบกลับ #12

pizza_p

> สอบถามเรื่องการ update ข้อมูลในตาราง
« ตอบกลับ #12 เมื่อ: 27 ม.ค. 61 , 19:28:37 »
โค้ดที่ผมให้ไป ให้ตรวจดูว่าพวกปุ่ม พวก control หรือชื่อฟอร์มต่างๆ มันชื่อนั้นหรือเปล่า copy ไปดื้อๆ มักจะไม่ได้นะครับ เพราะผมก็ไม่รู้ว่า control หรือปุ่มมันชื่ออะไรจริงๆ เพียงเดาจากรูปว่าน่าจะเป็นอะไรเท่านั้น

รูปแบบโค้ดที่ผมให้มันจะไม่ไปยุ่งกับตัว SupplierForm เลยนะครับ ฉะนั้นไม่ต้องไปปรับแต่ SupplierForm แต่อย่างใด

 

29 ม.ค. 61 , 17:59:29
ตอบกลับ #13

ekppom

> สอบถามเรื่องการ update ข้อมูลในตาราง
« ตอบกลับ #13 เมื่อ: 29 ม.ค. 61 , 17:59:29 »
แนะนำนะครับ ผมใช้วิธีนี้อยู่ครับ
-สร้างปุ่มสำหรับเลือกรายการในฟอร์มเพิ่มข้อมูลSupplierสมมุติชื่อ Command0
-ใส่Code ตรงOn Click ดังนี้
Private Sub Command0_Click()
Forms("ชื่อฟอร์มใบสั่งซื้อ").ชื่อText Box(ของฟอร์มใบสั่งซื้อ) = Me.ชื่อText Box(ของฟอร์มเพิ่มข้อมูลSupplier)
DoCmd.Close
End Sub

จะเป็นการเลือกชื่อSupplier โดยอัตโนมัติครับ
« แก้ไขครั้งสุดท้าย: 29 ม.ค. 61 , 18:12:44 โดย ekppom »

 

30 ม.ค. 61 , 08:20:40
ตอบกลับ #14

prajak

> > สอบถามเรื่องการ update ข้อมูลในตาราง
« ตอบกลับ #14 เมื่อ: 30 ม.ค. 61 , 08:20:40 »
แนะนำนะครับ ผมใช้วิธีนี้อยู่ครับ
-สร้างปุ่มสำหรับเลือกรายการในฟอร์มเพิ่มข้อมูลSupplierสมมุติชื่อ Command0
-ใส่Code ตรงOn Click ดังนี้
Private Sub Command0_Click()
Forms("ชื่อฟอร์มใบสั่งซื้อ").ชื่อText Box(ของฟอร์มใบสั่งซื้อ) = Me.ชื่อText Box(ของฟอร์มเพิ่มข้อมูลSupplier)
DoCmd.Close
End Sub

จะเป็นการเลือกชื่อSupplier โดยอัตโนมัติครับ
เป็นอีกหนึ่งวิธีที่ OK เลยครับ ผมลองใช้ได้เลย ขอบคุณนะครับ

 

31 ม.ค. 61 , 08:52:42
ตอบกลับ #15

prajak

> > > สอบถามเรื่องการ update ข้อมูลในตาราง
« ตอบกลับ #15 เมื่อ: 31 ม.ค. 61 , 08:52:42 »
แนะนำนะครับ ผมใช้วิธีนี้อยู่ครับ
-สร้างปุ่มสำหรับเลือกรายการในฟอร์มเพิ่มข้อมูลSupplierสมมุติชื่อ Command0
-ใส่Code ตรงOn Click ดังนี้
Private Sub Command0_Click()
Forms("ชื่อฟอร์มใบสั่งซื้อ").ชื่อText Box(ของฟอร์มใบสั่งซื้อ) = Me.ชื่อText Box(ของฟอร์มเพิ่มข้อมูลSupplier)
DoCmd.Close
End Sub

จะเป็นการเลือกชื่อSupplier โดยอัตโนมัติครับ
เป็นอีกหนึ่งวิธีที่ OK เลยครับ ผมลองใช้ได้เลย ขอบคุณนะครับ
ลองนำวิธีนีไปใช้กับอีกform ซึ่งในformก็ประกอบด้วย Main form ชื่อ POH กับ Sub form ชื่อ POD Subform พบปัญหาหลังจากกดเลือกรายการสินค้าในform PO Description จะขึ้น error ตามรูปครับ


 แต่ถ้าผมไปเปิดเฉพาะ subform( ไม่เปิด main form) แล้วเลือกรายการสินค้า ใช้ได้ครับ ไม่ error ตามรูป


อันนี้เป็น code ในปุ่มเลือกรายการสินค้า ของ form PO Description

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


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