สอบถามเรื่องการค้นหาข้อมูลครับ
@ ประกาศใช้งานเว็บบอร์ดใหม่ => บอร์ดเรียนรู้ Access สำหรับคนไทย

 1,355   7 สอบถามเรื่องการค้นหาข้อมูลครับ

รบกวนสอบถามครับ ในช่องค้นหา Style No. กับ Buyer ถ้าผมต้องการให้เวลาเราคีย์ตัวอักษร เพียงแค่เราพิมพ์ตัวแรกลงไป มันจะสุ่มคำมาให้เหมือนกับ excel ครับ ไม่ทราบว่าต้องทำยังไงครับ


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

1 @R24456
เพียงแต่เปลี่ยนจาก text box ไปเป็น combo box โดย Style No. ให้ใส่ Row Source property เป็น select distinct ชื่อฟิลด์ของSTYLE from ชื่อเทเบิล order by ชื่อฟิลด์ของSTYLE ส่วนของ Buyer ให้ใส่เป็น select distinct ชื่อฟิลด์ของBUYER from ชื่อเทเบิล order by ชื่อฟิลด์ของBUYER และทั้งสองตัวให้กำหนด Limit To List property เป็น True/Yes ครับ

แต่ถ้ามีการเพิ่ม/แก้ไข/ลบเรคอร์ดโดยทำให้ BUYER หรือ STYLE เปลี่ยนแปลงไป ชื่อที่เปลี่ยนนั้นอาจจะไม่ตรงกับที่มีใน combo box แล้ว เราจะต้องสั่งให้ combo box ไปดึงข้อมูลชื่อเหล่านั้นมาใหม่หลังปรับปรุงข้อมูลทุกครั้ง โดยเขียนไว้ใน Form_AfterUpdate และ Form_AfterDelConfirm event procedure เป็น

Private Sub Form_AfterUpdate()
   Me.ชื่อcomboboxของStyleNo.Requery
   Me.ชื่อcomboboxของBuyer.Requery
End Sub


และ

Private Sub Form_AfterDelConfirm(Status As Integer)      
   If Status = acDeleteOK then
      Me.ชื่อcomboboxของStyleNo.Requery
      Me.ชื่อcomboboxของBuyer.Requery
   End If
End Sub
2 @R24458
ทำตามที่คุณสันติสุขบอกได้แล้วครับ ขอบคุณมากครับ
3 @R24491
รบกวนสอบถามเพิ่มเตฺิมนะครับ ถ้าเราต้องการคีย์ข้อมูลเพิ่มในฟอร์ม โดยการคีย์คือคีย์อักษรตัวแรกก็จะมีการเสนอคำอัตโนมัติมาให้(เหมือนการคีย์ในexcel) โดยที่เราไม่ต้องใช้ combo box เหมือนข้างบน(คือไม่ต้องการให้มี dropdown) สามารถทำได้หรือเปล่าครับ

4 @R24494
พยายามหาข้อมูลตอนนี้ยังไม่ได้เเลยครับ รบกวนด้วยนะครับ
5 @R24503
ตัวโค้ดที่ทำออกมาดูไม่ยุ่งยากเท่าไหร่ แต่กว่าจะทดสอบเพื่อหา event และอัลกอริธึมที่ถูกต้อง (เท่าที่ทดสอบได้) ค่อนข้างยุ่งยากครับ คุณเอาโค้ดนี้ใส่ไว้ในซับฟอร์ม แต่ถ้าเท็กซ์บ็อกซ์ไม่ได้ชื่อ AGENT ก็ให้เปลี่ยนทุกจุดที่ไม่ใช่สีแดงให้หมดด้วยครับ แล้วแทน "ชื่อเทเบิล" ด้วยชื่อที่ถูกต้องด้วยครับ โค้ดนี้จะค้นหาชื่อ AGENT ตัวต่อไปจากฟิลด์ชื่อ AGENT (สีแดง) เช่นเดียวกัน โดยหาคำที่มีอักษรขึ้นต้นเหมือนกับที่ป้อน แล้วแสดงบนเท็กซ์บ็อกซ์ให้


Option Compare Database
Option Explicit

Dim DontSearch As Boolean

Private Sub AGENT_Change()
    Dim T As Variant
    Dim L As Integer
    
    If DontSearch Then GoTo ExitProc
    
With Me.AGENT
    If Nz(.Text, "") = "" Then GoTo ExitProc
    
    L = Len(.Text)
    
    If .SelStart < L Then GoTo ExitProc
    
    T = DMin("AGENT", "ชื่อเทเบิล", "AGENT > '" + .Text + "' and AGENT like '" + .Text + "*'")
    
    If IsNull(T) Then GoTo ExitProc
    
    .Text = CStr(T)
    .SelStart = L
    .SelLength = Len(.Text) - L
End With
    
ExitProc:
    Exit Sub
End Sub

Private Sub AGENT_KeyDown(KeyCode As Integer, Shift As Integer)
    DontSearch = (KeyCode = vbKeyDelete) Or (KeyCode = vbKeyBack)
End Sub
6 @R24504
เพิ่มเติม : ถ้าอยากได้ค่าเดียวกับบรรทัดก่อนหน้า แค่กด Ctrl-' (single quote) ก็ได้ครับ
7 @R24505
ยังไม่ได้ลองเลยครับ ได้ผลยังไงผมจะมาแจ้งครับ ขอบคุณมากครับ
@ ประกาศใช้งานเว็บบอร์ดใหม่ => บอร์ดเรียนรู้ Access สำหรับคนไทย
แล้วจะใส่ลิ้งอ้างอิงมาที่โพสต์เก่านี้หรือไม่ก็ตามสะดวกครับ
Time: 1.5164s