อยากทราบวิธีเคลียร์ฟอร์มให้ว่าง
กระทู้เก่าบอร์ด อ.Yeadram

 1,154   8
URL.หัวข้อ / URL
อยากทราบวิธีเคลียร์ฟอร์มให้ว่าง

คือมีฟอร์มอยู่ 2 ฟอร์มครับ
คือ Form A และ FormB
สมมติว่า ถ้าเรากรอกข้อมูลใน Form A อยากทราบวิธีที่เวลา กด Bottom MM แล้ว
ให้ cursor ไปอยู่ที่ Form B และ เคลียร์ข้อมูลใน Form B ให้ว่าง แต่ไม่ใช่การสร้าง Record(ID) ใหม่นะครับ
เพราะที่ผ่านมา ผมใช้ คำสั่ง

Private Sub Open_FormB_Click()
DoCmd.OpenForm "FormB"
DoCmd.GoToRecord , , acNewRec
End Sub
คำสั่งข้างบนกลับไปสร้าง record (ID) ขึ้นมาใหม่
ที่ต้องการคือกรอกข้อมูลของ Record(ID) เดิมแต่คนละฟอร์มเท่านั้นเองครับแล้วบันทึกในตารางเดียวกันครับ

ขอคำแนะนำผู้รู้ด้วยนะครับ

8 Reply in this Topic. Dispaly 1 pages and you are on page number 1

1 @R22906
ถ้าฟอร์ม B ผูกกับเทเบิล ***และ*** ID เป็นฟิลด์ประเภท Autonumber แล้ว ไม่มีวิธีใดที่จะให้แสดงฟอร์มเปล่าๆครับ
2 @R22907
แล้วจะมีวิธีแก้ไข ไหมครับ
หรือเราต้องแยกตารางตามฟอรม์ทั้งสองครับ
3 @R22908
คือผมไม่รู้ว่าคุณออกแบบเทเบิลอะไรยังไงบ้าง ก็แนะนำว่าถ้าฟิลด์ทั้งหลายของทั้ง 2 เทเบิล ***ขึ้นกับ*** ID   และเป็นค่า ID เดียวกันอีกด้วย อย่างนี้ควรจับรวมเป็นเทเบิลเดียวกันครับ    แต่ถ้า ID ของฟอร์ม B ทำหน้าที่แค่เพื่อให้สามารถอ้างอิงกลับไปหาเรคอร์ดเดียวกันของเทเบิลของฟอร์ม A และฟิลด์ต่างๆในฟอร์ม B ก็ไม่ได้ขึ้นกับ ID แล้วหล่ะก็   ให้เปลี่ยน data type ของฟิลด์ ID ในเทเบิลของฟอร์ม B ให้เป็น Long Integer ครับ ดังนั้นเมื่อคุณสั่ง DoCmd.GoToRecord , , acNewRec ในฟอร์ม B มันก็จะไปพื้นที่ว่างเพื่อให้ป้อนเรคอร์ดใหม่ โดย ID ก็จะไม่มีการสร้างค่าอะไรออกมาโดยอัตโนมัติเหมือนอย่างแต่ก่อนครับ คุณก็สามารถป้อนค่า ID เข้าไปได้เองเลย

ปล. ช่วงเช้าผมไม่อยู่ครับ จะเข้ามาอีกทีไม่บ่ายก็เย็นเลย
4 @R22909
1.การออกแบบ Form A และ FormB นั้นจะใช้ตารางร่วมกันครับ
คือตารางที่ชื่ื่อว่า tblnpc ทั้งสองฟอร์มใช้ตารางเดียวกันในการบันทึกข้อมูลครับ
2. ตาราง tblnpc นี้ primary key คือ field ชื่อว่า ID โดยจะให้โปรแกรมรันตัวเลขแบบ AutoNumber ครับ ผมจะไม่ไปกำหนดอะไร แต่ field นีี้จะไม่มีโชว์ในแบบฟอร์มนะครับ
3. field แรกในแบบฟอร์ม Form A ที่ผมจะกรอกข้อมูลชื่อ field "NPCID" (Tex box) แต่จะกรอกเป็นตัวเลขครับ หรือสรุปง่ายๆ field นี้จะใช้เป็นรหัสแบบสอบถาม สามารถลบแก้ไขได้
4. field แรกของแบบ Form B คือ field "BeginYear" (Text box) จะใช้กรอกปี พ.ศ.
ครับ
5.สรุปคือทั้ง field "NPCID" และ field "BeginYear" จะอยู่ในตาราง tblnpc ซึ่งเป็นตารางเดียวกันครับ
6. ประเด็นปัญหาคือ ผมสร้างปุ่มกด Bottom MM เอาไว้กดให้ข้ามไปที่ form B ทันที่และเมื่อกดไปแล้ว
7. กรณีที่เราได้กรอกข้อมูลมาหลาย Record แล้ว อยากให้เวลาปุ่ม Bottom MM ให้มีคำสั่ง เคลียร์ข้อมูลใน Form B ที่มีข้อมูลเก่าด้วยได้เลยครับ

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


ขอบคุณครับ
ชัชชาติ วงหนองเตย
5 @R22910
คำตอบก็ยังคงอย่างเดิม คือเมื่อไหร่ที่มี ID เป็น AutoNumber เมื่อไปเรคอร์ดใหม่ (ซึ่งเป็นวิธีเดียวที่จะทำให้หน้าฟอร์มว่างๆ สำหรับฟอร์มที่ผูกเข้ากับเทเบิล) ID จะถูกสร้างใหม่เสมอ ก็ต้องหาฟิลด์อื่นที่ไม่ใช่ AutoNumber มาใช้เป็น Primary Key แทนครับ ไม่งั้นทำไม่ได้

คำถามก็คือ ต้องการไปฟอร์ม B เปล่าๆเพื่อป้อนข้อมูลเข้าไปยังเรคอร์ดที่มีอยู่แล้วเรคอร์ดไหน (ID มีค่าเป็นอะไร) ? และทำไมต้องแยก 2 ฟอร์ม ?
6 @R22911
Record เดิมเลยครับ
1. สมมติว่า record แรก autonumber ID คือ 1 รหัสแบบสอบถามคือ NPCID 001 อยู่ในฟอร์มแรก
ฟอร์มที่สอง ฟิลแรกของฟอร์มที่สองก็คือ BeginYear ซึ่งเป็นข้อมูลของ แบบสอบถาม NPCID 001 แหละครับ คือ record เดียวกันครับ
2.ที่แยกหน้าเพราะแบบสอบถามมีข้อมูลที่เยอะครับจึงแยกเป็นสองฟอร์ม และคนกรอกจะได้ไม่สับสนด้วยหากแยกฟอร์มตามแบบสอบถาม

ขอบคุณครับ
ชัชชาติ วงหนองเตย
7 @R22913
สามารถใช้ Tab Control เพื่อให้มีเหมือนหลายๆฟอร์มบนหน้าฟอร์มเดียวกันได้ ซึ่งทั้งหมดยังเป็นเรคอร์ดเดียวกัน ลองดูภาพผลการใช้ Tab Control ในนี้ครับ





(ซึ่งทั้งหมดอยู่ใน http://www.functionx.com/access2007/Lesson31.htm)

ยังไงก็ตาม ไม่แนะนำให้ใช้ AutoNumber สำหรับ Primary Key นะครับ อาจเกิดปัญหาภายหลังได้
8 @R22915

ขอไปอ่านและทำความเข้าใจก่อน
ขอบคุณนะครับ
@ ประกาศใช้งานเว็บบอร์ดใหม่ => บอร์ดเรียนรู้ Access สำหรับคนไทย
แล้วจะใส่ลิ้งอ้างอิงมาที่โพสต์เก่านี้หรือไม่ก็ตามสะดวกครับ
Time: 0.3302s