ต้องการเพิ่มข้อมูลใน Combo box โดยไม่ต้องปิดฟอร์มแล้วไปเพิ่มในฟอร์มข้อมูลอะไหล่



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

30 เม.ย. 61 , 13:30:57
อ่าน 708 ครั้ง

สุภาพร


รบกวนสอบถามค่ะ (เพิ่งเริ่มหัดเขียน MS Access เลยงง ว่าจะต้องเขียน ยังไงค่ะ)

สิ่งที่ต้องการ
 ถ้า user ใส่รายละเอียดอะไหล่ใน ฟอร์ม Purchase order แล้วไม่มีในรายการอะไหล่ ใน table (tbl_product) ให้ขึ้น msgbox สอบถามว่าต้องการ add ข้อมูลหรือไม่  ถ้า ต้องการเพิ่มให้
แสดง form frmaddtbl_product เพื่อเพิ่มข้อมูลใหม่ โดยหลังจากเพิ่มข้อมูล ใน frmaddtbl_product เสร็จ ให้ปิด form frmaddtbl_product แล้วส่งค่ากลับมาใน
form Purchase order

1. Form Purchase order จะต้องเขียนคำสั่งใน combobox.afterupdate() อย่างไรคะ
2. Form frmaddtbl_product จะต้องกำหนด property อย่างไรบ้างเพื่อให้รับค่าจาก Purchase order แล้วส่งค่ากลับหลังจาก user ปิดฟอร์ม frmaddtbl_product
 

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

30 เม.ย. 61 , 22:12:29
ตอบกลับ #1

ปิ่นณรงค์

อ้างถึง
1. Form Purchase order จะต้องเขียนคำสั่งใน combobox.afterupdate() อย่างไรคะ

ผมว่าถ้าต้องการจะหาค่าที่ไม่ได้อยู่ในรายการนั้นใช้ Event NotInList ดีกว่าครับดังในรายการนี้
เป็นคำสั่งที่กำหนดไว้ที่ตัว Combobox ครับ เมื่อไม่มีในรายการให้ แจ้งเตือน ถ้าตอบ Yes ก็จะเปิดฟอร์มที่ต้องการให้เรา
โค๊ด: [Select]
Private Sub ReviewParts_NotInList(NewData As String, Response As Integer)
   
    Dim i As Integer
    Dim Msg As String
 
    If NewData = "" Then Exit Sub
    Msg = "'" & NewData & "' ไม่มีในรายการ" & vbCr & vbCr
    Msg = Msg & "ต้องการเพิ่มรายการใหม่ ?"

    i = MsgBox(Msg, vbQuestion + vbYesNo, "ระบบตรวจสอบ")
    If i = vbYes Then
        DoCmd.OpenForm "frmAddtbl_product", acNormal
        Response = acDataErrAdd
        Else
        Me.ReviewParts.Undo
        Response = acDataErrContinue
               End If               
End Sub
ส่วน
อ้างถึง
2. Form frmaddtbl_product จะต้องกำหนด property อย่างไรบ้างเพื่อให้รับค่าจาก Purchase order แล้วส่งค่ากลับหลังจาก user ปิดฟอร์ม frmaddtbl_product
ผมใช้การทำให้แสดง รายการที่เพิ่มล่าสุดจากฟอร์ม frmAddtbl_product ลงไปในรายการใหม่โดยอัตโนมัติครับ
โค๊ด: [Select]
Private Sub Form_Close()
Dim i As String
Forms.form_main.ReviewParts = Me.ReviewParts
Forms.form_main.ReviewParts.Requery
Forms.form_main.ReviewParts.SetFocus
i = Forms.form_main.ReviewParts.ListCount - 1
Forms.form_main.ReviewParts = Forms.form_main.ReviewParts.ItemData(i)
End Sub

ตัวอย่างด้านล่างครับ
« แก้ไขครั้งสุดท้าย: 30 เม.ย. 61 , 23:32:59 โดย Newbies »
:love: :grin:
 
โพสต์นี้ได้รับคำขอบคุณจาก: pirin, สุภาพร

01 พ.ค. 61 , 14:47:26
ตอบกลับ #2

สุภาพร

ขอบคุณมากค่ะ

ลองทำดูแล้วพยายามแก้ code แต่มันขึ้น error  ตอนที่คำสั่งให้ Combo Box ทำ requery เนื่องจาก combo box อยู่ใน subform ชื่อ frmtbl_purdet จะต้องเขียนคำสั่งยังไงคะ




ตอนนี้เขียน code ตอนปิดฟอร์มที่บันทึกรายการอะไหล่ แล้วสั่งไป requery คอมโบ้บอกซ์ซี่งอยู่ใน subform ชื่อ frmtbl_purdet แล้วมันขี้น error ตลอด

 Private Sub Form_Close()
   Forms.frmtbl_Purdet.Part_desc.Requery
End Sub

รบกวนสอบถามอีกครั้งค่ะ

 

01 พ.ค. 61 , 20:24:35
ตอบกลับ #3

ปิ่นณรงค์

ขอบคุณมากค่ะ

ลองทำดูแล้วพยายามแก้ code แต่มันขึ้น error  ตอนที่คำสั่งให้ Combo Box ทำ requery เนื่องจาก combo box อยู่ใน subform ชื่อ frmtbl_purdet จะต้องเขียนคำสั่งยังไงคะ




ตอนนี้เขียน code ตอนปิดฟอร์มที่บันทึกรายการอะไหล่ แล้วสั่งไป requery คอมโบ้บอกซ์ซี่งอยู่ใน subform ชื่อ frmtbl_purdet แล้วมันขี้น error ตลอด

 Private Sub Form_Close()
   Forms.frmtbl_Purdet.Part_desc.Requery
End Sub

รบกวนสอบถามอีกครั้งค่ะ

ถ้าพี่จะทำแค่เพิ่มรายการแล้วให้ requery ที่ Control ตัวนี้ให้แสดงรายการล่าสุดนั้น เพิ่ม ที่ ตัว Control ตัวนั้นเลยก็ได้ครับ
ที่ frmtbl_purdet ใส่คำสั่ง ที่ Control Part_desc ใน event GotFocus
โค๊ด: [Select]
Private Sub Part_desc_GotFocus()
me.Part_desc.requery
End Sub
« แก้ไขครั้งสุดท้าย: 01 พ.ค. 61 , 20:33:04 โดย Newbies »
:love: :grin:
 
โพสต์นี้ได้รับคำขอบคุณจาก: สุภาพร

02 พ.ค. 61 , 14:09:51
ตอบกลับ #4

pizza_p

อ้างอิง control ใน subform ให้ลองใช้แบบนี้ครับ

Private Sub Form_Close()
   Forms.[ชื่อMain_Form].frmtbl_Purdet.Form.Part_desc.Requery
End Sub
« แก้ไขครั้งสุดท้าย: 02 พ.ค. 61 , 14:13:38 โดย pizza_p »

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

02 พ.ค. 61 , 15:32:27
ตอบกลับ #5

สุภาพร

ลองทำตามที่คุณ Pizza_p แนะนำ

Private Sub Form_Close()
   Forms.[ชื่อMain_Form].frmtbl_Purdet.Form.Part_desc.Requery
End Sub

มันขึ้น error '438' Object doesn't support this property or method. ค่ะ

ลองตัด form เหลือ
 
Forms.[ชื่อMain_Form].frmtbl_Purdet.Part_desc.Requery

ก็ขึ้น error เดียวกันค่ะ

รบกวนท่านผู้รู้แนะนำ ด้วยค่ะ

 

02 พ.ค. 61 , 17:22:01
ตอบกลับ #6

ปิ่นณรงค์

แก้เป็น

[Forms]![ชื่อฟอร์มหลัก]![frmtbl_Purdet].[Form]![Part_desc].Requery


ตัวอย่างด้านล่าง
« แก้ไขครั้งสุดท้าย: 02 พ.ค. 61 , 20:21:18 โดย Newbies »
:love: :grin:
 
โพสต์นี้ได้รับคำขอบคุณจาก: สุภาพร


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