ฟอร์ม..ซ้อน..ฟอร์ม (มีรูปแนบครับ)
กระทู้เก่าบอร์ด อ.Yeadram

 4,260   4
URL.หัวข้อ / URL
ฟอร์ม..ซ้อน..ฟอร์ม (มีรูปแนบครับ)

ต้องการเลียนแบบ แม่แบบที่ติดมากับ Access ครับ

คือ เมื่อคลิกที่ด่านซ้ายตรงคำว่า "สร้าง"(ในรูปที่วงกลม)ที่ฟอร์มแผ่นข้อมูล



ผลที่ปรากฏ คือ

จะมีอีกฟอร์ม (ที่ลูกศรชี้ในรูป) เด้งขึ้นมาให้เรากรอกข้อมูลครับ
โดยข้อมูลที่กรอกจะต้องบันทึกลงใน ฟอร์มแผ่นข้อมูล และ ในตารางด้วยครับ

รบกวนพี่ๆอธิบายวิธีการทำ หรือมีวิธีใดแนะนำบ้างครับ
ทดลองทำมานานแล้วครับไม่ได้ซักที

ขอบคุณมากครับ

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

1 @R09156
ทำฟอร์มมาสองฟอร์ม
ทั้งสองฟอร์มให้ใช้แหล่งข้อมูลเดียวกัน
- frm1 ให้สร้างฟอร์มแบบ ตารางแผ่นข้อมูล กำหนดมุมมองเริ่มต้นเป็น "มุมมองแผ่นข้อมูล"
   - textbox ตัวที่แสดงฟิลด์ id ให้ชื่อว่า txt_id
   - ให้ตั้งค่าเริ่มต้น (Defaultvalue) ของ textbox ว่า "(สร้าง)"
   - เขียนโค้ดในเหตุการณ์ on Click ของtextbox

Private sub txt_id_Click()
if txt_id="" or txt_id = "(สร้าง)" then
docmd.openform ,"frm2"..................... acnew (เปิดฟอร์มพร้อมกับไปที่เรคคอร์ดใหม่)
else
docmd.openform , "frm2",, ใส่ whereให้มันตรงนี้ว่า "[ID] = '" & ME.txt_id & "'"
End if
End sub

- frm2 สร้างฟอร์มโดยกำหนดให้มุมมองเริ่มต้นเป็นแบบ มุมมองฟอร์ม สร้างฟอร์มแบบ "เรียงต่อกัน"
   - เขียนโค้ดในเหตุการณ์ เมื่อปิด (on Close) ว่า
Private Sub forml_close()
forms("frm1").requery
End sub
2 @R09157
ขอบคุณ คุณyeadram ครับแต่มีคำถาม
1.frm1 ให้สร้างฟอร์มแบบ ตารางแผ่นข้อมูล หมายถึง ฟอร์มแผ่นข้อมูลรึปล่าวครับ
2. ตรงที่ให้เปลี่ยนชื่อใน Text Box ต้องเปลี่ยนเป็น มุมมองออกแบบ ก่อนใช่มั้ยครับ
3. Code บรรทัดที่ 3 พิมพ์แค่
               docmd.openform ,"frm2"
    ใช่รึปล่าวครับ
4. Code บรรทัดที่ 4 พิมพ์ว่า
               docmd.openform , "frm2",,where "[ID] = '" & ME.txt_id & "'"
     ใช่รึปล่าวครับ
5. frm2 ฟอร์มแบบ "เรียงต่อกัน" หมายถึง กล่องโต้ตอบโมดอล รึปล่าวครับ
6. Code ใน frm2 บรรทัดแรกต้องเขียนว่า
                 Private Sub Form_Close()    
     ก่อนรึปล่าวครับ

รบกวนคุณyeadram อีกครั้งครับ

ปล.ผมใช้ Access 2007 + มือใหม่มากๆ ไม่รู้เกินเอื้อมไปรึปล่าวที่จะใช้ Access พื้นฐาน visual basic ก็ไม่มี
3 @R09168
ตอบ
1 น่าจะใช่นะครับ (ผมไม่ได้ใช้เวอร์ชั่น 2007 ไม่แน่ใจว่าเขาเขียนว่าอะไร)
2 ครับ ต้องเปลี่ยนในมุมมองออกแบบครับ
3 เต็มๆ ให้เขียนอย่างนี้ครับ
docmd.OpenForm "from1",,,,acFormAdd,acDialog
(เขียนไปก่อนหน้านี้คร่าวๆ จำไม่ค่อยแม่น ตอนนี้ไปดูรูปแบบมาแล้วครับ อิอิ)

4 เขียนอย่างนี้ครับ
DoCmd.OpenForm "frm2", , , "[ID] = '" & Me.txt_id & "'"
5 ออกแบบฟอร์มตามวิซาร์ดเลยครับ เอาแบบธรรมดาที่สุดแหละครับ ลองหาดู ว่าวิซาร์ดมันพาสร้างแบบไหน (น่าจะมีวิซาร์ดพาสร้างนะในเวอร์ชั่น 2007)
6 ครับเขียนอย่างนั้นแหละ ผมพิมพ์เกินไปอักขระหนึ่ง

ปล. ไม่เกินไปหรอกครับ จริงๆ ผมเองก็เรียนรู้ access ก่อน vb ครับ เรียนรู้ระบบฐานข้อมูล เรียนรู้การจัดการ ซึ่งแม้ไม่มีความรู้ vb ก็เรียนรู้ได้ครับ เพราะ Access มันทำให้ง่ายด้วยวิซาร์ดครับ ทางด้านเบื้องหลังมันก็คือ vb นั่นแหละ แต่ Access เขากลัวมือใหม่วุ่นวายสับสนต้องเรียนรู้เยอะ เขาก็เลยทำปุ่มให้คลิ๊ก ทำจุดให้ลาก มีวิซาร์ดช่วยในการตัดสินใจ คือมีโค้ดอัตโนมัติมาให้เยอะแยะแล้วครับ เพียงเราไม่เห็นมันแค่นั้น   แต่ที่สุดแล้ว ถ้าอยากได้ความละเอียดของกระบวนงาน ให้ตรงตามต้องการของเราที่สุด ก็คงต้องเริ่มเรียนรู้ vb แหละครับ มันยืดหยุ่น มันพลิกแพลงได้มากกว่า วิซาร์ดแน่นอนครับ
4 @R09169
ยังไม่สำเร็จครับ ลองต่อไป
ถาม 1. ข้อ 3 ที่คุณyeadram ตอบต้องพิมพ์เป็น "frm2" หรือปล่าวครับ
ถาม 2. ตรงแผ่นคุณสมบัติ เหตุการณ์ที่เราเขียน Code เข้าไป ต้องเลือกเป็น [กระบวนงานเหตุการณ์] ทุกครั้งหรือปล่าวครับ

ผมเอาที่ทดลองและที่เขียน Code มาให้ดู ถ้ามีผิดตรงไหนรบกวนแนะนำครับ



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