การใช้ตัวแปรในสตริงตัวกรอง

ฉันมีฟอร์มย่อยที่ส่งคืนข้อมูลจากตาราง อย่างไรก็ตาม ฉันต้องการกรองข้อมูลนี้เพิ่มเติมโดยใช้คุณสมบัติตัวกรอง

ฉันมีกลุ่มของปุ่มตัวเลือก กล่องคำสั่งผสม และคำสั่ง case ซึ่งตั้งค่าตัวแปรที่ฉันต้องการใช้เป็นค่าที่ถูกต้อง ขึ้นอยู่กับการเลือกปุ่มตัวเลือก

รหัสของฉันสำหรับการเติมตัวแปรทำงานได้อย่างสมบูรณ์ แต่ฉันไม่สามารถใช้ vba เพื่อตั้งค่าตัวกรองได้ เว้นแต่ฉันจะพิมพ์สตริงที่ต้องการด้วยตนเอง

ฉันคิดว่าปัญหาของฉันคือสตริงตัวกรองของฉันมีไวยากรณ์ไม่ถูกต้อง แต่ฉันไม่แน่ใจว่าจะทำอย่างไร อาจเป็นเรื่องเกี่ยวกับตัวคั่นข้อความ

Forms![frmPendingActions]![qryPendingAction subform].Form.Filter = Filterby = FilterCrit
Forms![frmPendingActions]![qryPendingAction subform].Form.FilterOn = True

สมมติสำหรับคำถามนี้ว่า Filterby=[Reporter] และ FilterCrit= Fake Name


person VBwhatnow    schedule 18.06.2012    source แหล่งที่มา


คำตอบ (1)


ใช่ ฉันคิดว่าปัญหาเกี่ยวข้องกับตัวคั่นข้อความ รหัสควรมีลักษณะคล้ายกับต่อไปนี้:

Forms![frmPendingActions]![qryPendingAction subform].Form.Filter = "[Reporter] ='" &  FilterCrit  & "'"

ตัวกรองควรถูกสร้างขึ้นให้เหมือนกับส่วนคำสั่ง Where โดยไม่มีคำว่า Where หากคอลัมน์ที่คุณกำลังกรองมีประเภทข้อมูลแบบข้อความ เกณฑ์จะต้องอยู่ในเครื่องหมายคำพูดเดี่ยวหรือคู่ หากคอลัมน์เป็นประเภทข้อมูลวันที่ จะต้องอยู่ใน # ถ้าคอลัมน์เป็นประเภทข้อมูลตัวเลข ก็ไม่จำเป็นต้องปิดล้อม

หากคุณไม่ต้องการกรองตามคอลัมน์ Reporter เสมอไป คุณสามารถสร้างสตริงโดยใช้คำสั่ง if หรือเลือกคำสั่ง case จากนั้นใช้สตริงนั้นกับตัวกรองแบบฟอร์ม

ตัวอย่างเช่น:

If [somecondition] Then
   strFilter="[Reporter]='" & FilterCrit & "'"
Else
   strFilter="[ID]=" & 0
End If
Forms![frmPendingActions]![qryPendingAction subform].Form.Filter = strFilter

ฉันหวังว่านี่จะช่วยได้.

person Mark3308    schedule 18.06.2012
comment
ขอบคุณ นี่เป็นความหวัง ดูเหมือนว่าตัวกรองจะทำงานได้อย่างถูกต้อง แต่ฉันคิดว่าคุณอาจเข้าใจคำถามของฉันผิดไปบ้าง คอลัมน์ที่ฉันต้องการกรองก็เป็นตัวแปรด้วย ฉันจะจัดการอย่างไร - person VBwhatnow; 18.06.2012
comment
คอลัมน์นี้เป็นประเภทข้อมูลแบบข้อความ - person VBwhatnow; 18.06.2012
comment
ไม่เป็นไร ฉันปรับโค้ดที่เหลือให้เหมาะกับคำสั่งของคุณแล้ว - person VBwhatnow; 18.06.2012