ให้ subform ไม่ save อัตโนมัติ
กระทู้เก่าบอร์ด อ.Yeadram

 3,703   5
URL.หัวข้อ / URL
ให้ subform ไม่ save อัตโนมัติ

เรียน อ.สุภาพ
    ผมสร้างฟอร์ม โดย main form ไม่ได้ bound กับ table ใด และให้ save เมื่อมีการกอปุ่มบันทึกเท่านั้น (ตามคำสั่งที่หาเจอในบอร์ดนี้ โดยการกำหนดตัวแปร issaveclicked ขึ้นมา ) แต่อยากให้ subform ซึ่ง bound กับอีก table หนึ่งมีคุณสมบัติอย่างเดียวกัน   โดยต้องการใ้ห้ save เมื่อมีการคลิกปุ่มบันทึกเท่านั้น ต้องทำอย่างไรครับ

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

1 @R11508
คิดว่าทำไม่ได้ครับ ถ้าไม่งั้นที่ main form คงทำได้ไปแล้วครับ

ในทางกลับกัน ทำ sub form ให้เป็นแบบ main form สิครับ
2 @R11521
ขออนุญาติ แจม
ขอถามข้อมูลเพิ่มเติม
1 subform ซึ่ง bound กับอีก table หนึ่ง
   table ที่ bound เป็น temp table หรือเป็น table ที่เก็บข้อมูลจริงครับ

2 ต้องการให้ save เมื่อมีการคลิกปุ่มบันทึกเท่านั้น
เป็นปุ่มเดียวกันกับ ปุม save ที่ man form ใช่มั้ยครับ
3 @R13255
ถ้าต้องการให้ Sub Form เซฟก็ต่อเมื่อกดปุ่มที่ Main Form ต้องทำอย่างไรบ้างคะ
4 @R13263
ใช้แนวทางตามคุณ ditasilk ดีที่สุดครับ
ไม่เห็นคุณพีร์ ตอบคำถามคุณ ditasilk สักที่ ไม่เข้าใจคำถามหรือว่า ไม่มีเวลาว่างกลับเข้ามาอ่าน
แต่เห็นว่า คุณ pierrot ก็เข้ามาถามซ้ำเข้ามาอีก ดังนั้นขอแนะนำเอาแบบให้มือใหม่ทำตามง่ายๆ กันเลยนะครับ

ข้อมูลสมมติครับ
- ฟอร์มย่อย ชื่อว่า fs_table2
- แหล่งข้อมูลของฟอร์มย่อย มีตารางเดียว ไม่ใช่คิวรี่ที่ผ่านการ join ชื่อว่า table2
- ฟอร์มหลักของคุณชื่อว่า fm_main มีคอนโทรลหลักๆ ที่สำคัญสองตัว
1 ปุ่มคำสั่งบันทึก ชื่อว่า cmdSave
2 คอนโทรลฟอร์มย่อย ชื่อว่า child1 ซึ่งได้ใช้แหล่งเป็นฟอร์มย่อยชื่อว่า fs_table2

วิธีทำครับ
1 คัดลอก Tabl2 ในหน้าต่างฐานข้อมูล เอาไปวางใหม่ เฉพาะโครงสร้าง ตั้งชื่อว่า tmpTable2
2 ไปเปิด fs_Table2 ในมุมมองออกแบบ แก้ไขแหล่งข้อมูล จากปกติ เป็น table2 ให้เปลี่ยนเป็น TmpTable2
3 เขียนโค้ดฝังในปุ่ม cmdSave ของฟอร์ม fm_main ดังนี้

Private Sub cmdSave_Click()
dim rc

' ทำการตรวจสอบจำนวนเรคคอร์ดในฟอร์มย่อย ว่ามีอยู่หรือเปล่า
rc=dcount("[ชื่อฟิลด์อะไรก็ได้ซักฟิลด์จาก tmptable2]", "tmpTable2")
if rc>0 then
docmd.setwarnings false
on error resume next
' สั่งให้นำข้อมูลจากตารางชั่วคราว ไปเก็บในตารางจริง
docmd.runSQL "Insert Into table2 select tmptable2.*"
if err<>0 then
msgbox "ไม่สามารถเพิ่มข้อมูลได้ โปรดตรวจสอบจาก Error" & vbcrlf & err & " : " & err.descripton
err.clear
exit sub
on error goto 0
end if

' สั่งล้างข้อมูลจากตารางชั่วคราว เพื่อรอรับข้อมูลใหม่
docmd.runSql "Delete from tmptable2"
' สั่งให้ฟอร์มย่อย โหลดข้อมูลว่าง เพื่อรอรับข้อมูลใหม่
me.child1.requery
msgbox "รายการ ถูกบันทึกเรียบร้อยแล้ว"
exit sub
end if
msgbox "ยังไม่มีรายการใน ฟอร์มย่อย โปรดตรวจสอบอีกครั้ง"
end sub
5 @R13273
ขอบคุณ คุณyeadram มากค่ะ ที่เราถามเอาไว้ข้างต้นมันไม่ชัดเจนต้องขอโทษด้วยค่ะ

ข้อมูลเป็นดังนี้ค่ะ
ฟอร์มหลักเป็นข้อมูลของ Dealer ค่ะ ชื่อ DealerData
ฟอร์มย่อยเป็นข้อมูลของพนักงานใน Dealer นั้นที่เราติดต่อด้วย ชื่อ Contact

ข้อมูลของฟอร์มหลักเกิดจากการคิวรี่ให้แสดงผลออกมาเฉพาะ Dealer ที่เราต้องการดูข้อมูล
โดยฟอร์มย่อยนั้นก็จะแสดงรายชื่อพนักงานของ Dealer นั้นที่เราติดต่อด้วยทั้งหมด

ซึ่งข้อมูลทั้งในฟอร์มหลักและฟอร์มย่อยจะเกิดการเพิ่มเติมหรือเปลี่ยนแปลงบ้างเป็นบางครั้ง

ถ้าต้องการให้ทั้งฟอร์มหลักและฟอร์มย่อยเซฟเมื่อกดปุ่มที่ฟอร์มหลัก
โดยมีข้อความขึ้นมาถามว่า ต้องการจะเซฟจริงๆ ใช่มั้ย ต้องทำอย่างไรคะ

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