เมื่อ enter แล้วให้ค้นหา (หาหัวข้อเก่าไม่เจอ ^^)
กระทู้เก่าบอร์ด อ.Yeadram

 1,146   2
URL.หัวข้อ / URL
เมื่อ enter แล้วให้ค้นหา (หาหัวข้อเก่าไม่เจอ ^^)

คือว่า ผมมีระบบค้นหา ซึ่งค้นหาได้เรียบร้อยสมบูรณ์ครับ ลักษณะคือ
ค้นหาโดยมีเงื่อนไข

รพ.(combobox) ภาควิชา(combobox)   และชื่อผู้เข้าอบรม(textbox)
combobox 2 อันแรก เมื่อคลิกแล้วผมทำให้ค้นหาอัตโนมัติได้แล้วครับ ส่วน textbox นั้น ผมก็สามารถค้นหาได้ โดยเมื่อเลือก รพ. ภาควิชา และพิมพ์ข้อความแล้วกดปุ่ม ค้นหา(command) ค้นหาได้ปกติทุกอย่างครับ

แต่ติดคือ ผมอยากให้มันค้นหาโดยเมื่อกด enter ที่ textbox แล้วค้นหาเลยอ่ะครับ

ซึ่งผมนึกได้สองวิธี
1 คือเอาcode ที่ปุ่ม command มาใส่ แต่ผลที่ได้คือ ค้นหาไม่ได้ ไม่ทำงาน
2 คือเขียนให้ไปสั่งปุ่ม command ทำงานอ่ะครับ จะได้ไม่ต้องเขียนโค้ดให้ยาว

ผมจึงรบกวนทุก ๆ ท่านครับ คือผมอยากได้วิธีที่ 2 อ่ะครับต้องเขียนโค้ดอย่างไรครับ

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

1 @R20851
เพิ่มเติมครับ (ไม่รู้ผิดตรงไหน).


Private Sub Text217_KeyDown(KeyCode As Integer, Shift As Integer)
If (KeyCode = 13) Then

    If IsNull(Me.Combo169) Then

    MsgBox "¡ÃسÒàÅ×Í¡âç¾ÂÒºÒÅ"
    Me.Combo169.SetFocus
    Exit Sub

    Else

        If IsNull(Me.Combo171) Then
        MsgBox "¡ÃسÒÃкØÀÒ¤ÇÔªÒ"
        Me.Combo171.SetFocus
        Exit Sub
    
        Else
       
        Dim ddddCUS As String
        ddddCUS = "Select * from Q_Customer where ([customer.DID] = " & Me.Combo171 & ") and ([customer.HID] = " & Me.Combo169 & ") and ([customer.CNAME] like ""*" & Me.Text217 & "*"")"
        Me.Q_Customer_subform.Form.RecordSource = ddddCUS
        Me.Q_Customer_subform.Form.Requery
       
        End If
    End If

End If
End Sub
2 @R20861
- การอ้าง Me.Text217 คือการเขียนอย่างย่อ ซึ่ง Access จะให้ค่า defauit property (,Value property) ออกมา ค่านี้จะเป็นค่าที่บันทึกอยู่ก่อนที่เราจะเข้ามาป้อน/แก้ไขเท็กซ์บ็อกซ์   แต่ KeyDown / KeyPress / KeyUp event นี้เกิดระหว่างที่เรากำลังคีย์ข้อมูลในเท็กซ์บ็อกซ์ใหม่ ดังนั้น Me.Text217.Value จึงยังเป็นค่าเดิม คุณจึงไม่ได้ค่าที่ถูกต้อง   

นอกจากนี้ KeyDown event ยังเกิดตอนที่เริ่มกดคีย์บอร์ด ค่าของคีย์ยังไม่ได้ถูกนำไปแปลงเป็นตัวอักษรและแปะลงในเท็กซ์บ็อกซ์ด้วยซ้ำ   แต่เนื่องจากคุณตรวจจับ Enter แล้วค่าที่เราต้องการก็ไม่ได้ต้องการ Enter พอดี ดังนั้นเราสามารถใช้ .Text property เพื่อให้ได้ค่าปัจจุบันบนเท็กซ์บ็อกซ์มาได้ตามจุดประสงค์ คุณก็ต้องใช้ Me.Text217.Text แทน Me.Text217 เฉยๆ

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