กระทู้เก่าบอร์ด อ.สุภาพ ไชยา
452 4
URL.หัวข้อ /
URL
ApplyFilter to Combo box
ขอคำแนะนำด้วยค่ะ ปัญหามีดังนี้
สร้าง Form บันทึกการยืม-คืน หนังสือ (single form)
1. ต้องการทำ unbound text box เพื่อรับข้อความที่ต้องการจะกรอง ให้ใส่ได้แบบ wildcard ได้ด้วย
2. จากนั้นทำ combo box และแสดงข้อมูลเฉพาะที่กรองแล้วจาก unbound text box ด้านบนนั่น
3. สามารถเลือกรายการที่ต้องการได้จาก combo box
4. และเมื่อเลือกแล้ว ให้ update ไปใส่ไว้ใน text box (field รหัสหนังสือ) ที่จัดเตรียมไว้ให้
ขอบพระคุณค่ะ
สร้าง Form บันทึกการยืม-คืน หนังสือ (single form)
1. ต้องการทำ unbound text box เพื่อรับข้อความที่ต้องการจะกรอง ให้ใส่ได้แบบ wildcard ได้ด้วย
2. จากนั้นทำ combo box และแสดงข้อมูลเฉพาะที่กรองแล้วจาก unbound text box ด้านบนนั่น
3. สามารถเลือกรายการที่ต้องการได้จาก combo box
4. และเมื่อเลือกแล้ว ให้ update ไปใส่ไว้ใน text box (field รหัสหนังสือ) ที่จัดเตรียมไว้ให้
ขอบพระคุณค่ะ
4 Reply in this Topic. Dispaly 1 pages and you are on page number 1
1 @R01420
ควรจะใช้ Combox Box แทน Text Box ที่แสดง รหัสหนังสือ เลยครับ
ไม่รู้ว่าจะมีเหตุผลอย่างอื่นด้วยหรือไม่ที่ค่อยเลือกรหัสหนังสือจาก Text Box อีกที่หนึ่ง
ส่วน Combox Box ก็ใช้ให้ SQL เป็นตัวกำหนด Row Source โดยใช้ Where clause ซึ่งรับค่ามาจาก Unbound Text Box อีกที่หนึ่ง โดยอาจใช้กับเหตุการณ์ AfterUpdate ดังนี้
Private Sub UnboundText_AfterUpdate()
Me.Combo0.RowSource = "Select ชื่อฟีลด์เป้าหมาย From ชื่อตารางเป้าหมาย Where ชื่อฟีลด์ที่ต้องการกรอง Like '*" & Me.UnboundText & "*'"
Me.Combo0.Requery
End Sub
ลองดูตัวอย่างการใช้ Where clause ที่ http://agserver.kku.ac.th/basiceng/FindRecordDB.zip
2 @R01421
ค่ะ เข้าใจแล้วค่ะ คิดว่าไม่น่าจะมีปัญหาอะไรแล้ว
จะปฏิบัติตามทุกอย่างค่ะ
ขอบคุณค่า
3 @R05962
จากโค้ดตัวอย่างนี้
Private Sub cmdSearchNow_Click()
txtSearch_AfterUpdate
End Sub
Private Sub txtSearch_AfterUpdate()
Dim strSearch As String
strSearch = Me.txtSearch
Me.frmSubForm.SetFocus
If Me.cmbField = "" Or IsNull(Me.cmbField) Then
DoCmd.FindRecord strSearch, acAnywhere, False, acSearchAll, False, acAll
Else
DoCmd.GoToControl Me.cmbField
DoCmd.FindRecord strSearch, acAnywhere, False, acSearchAll, False, acCurrent
End If
End Sub
ถ้าเราต้องการจะให้แสดงเฉพาะผลที่ได้จากการพิมพ์ใน txtSearch
เช่น พิมพ์คำว่า R
ก็จะแสดงเป็นแถวแบบ DataSheet
R1
R2
R3
และถ้าไม่พบ ก็มี Msg "ไม่พบข้อมูล" ขึ้นมาแสดง
เราจะต้องเพิ่มเติมในโค้ดตรงไหนบ้างครับ หรือมีวิธีการอย่างไร
แนะนำด้วยครับ
Private Sub cmdSearchNow_Click()
txtSearch_AfterUpdate
End Sub
Private Sub txtSearch_AfterUpdate()
Dim strSearch As String
strSearch = Me.txtSearch
Me.frmSubForm.SetFocus
If Me.cmbField = "" Or IsNull(Me.cmbField) Then
DoCmd.FindRecord strSearch, acAnywhere, False, acSearchAll, False, acAll
Else
DoCmd.GoToControl Me.cmbField
DoCmd.FindRecord strSearch, acAnywhere, False, acSearchAll, False, acCurrent
End If
End Sub
ถ้าเราต้องการจะให้แสดงเฉพาะผลที่ได้จากการพิมพ์ใน txtSearch
เช่น พิมพ์คำว่า R
ก็จะแสดงเป็นแถวแบบ DataSheet
R1
R2
R3
และถ้าไม่พบ ก็มี Msg "ไม่พบข้อมูล" ขึ้นมาแสดง
เราจะต้องเพิ่มเติมในโค้ดตรงไหนบ้างครับ หรือมีวิธีการอย่างไร
แนะนำด้วยครับ
4 @R05965
ผมจำได้ว่า อ. BADMan ได้เคยทำตัวอย่างไว้ให้ในกระทู้เก่าๆ นะครับ ผมจำไม่ได้แล้วว่าอยู่กระทู้ไหน ให้ค้นด้วยคำว่า BADMan ดูนะครับ อยู่ประมาณปี 45 ครับ
Time: 0.1177s