สอบถามวิธีการทำ Filter 2 ชั้นครับ
กระทู้เก่าบอร์ด อ.Yeadram

 2,034   5
URL.หัวข้อ / URL
สอบถามวิธีการทำ Filter 2 ชั้นครับ

ขอรบกวนอาจารย์และทุกๆท่านด้วยครับ

ตอนนี้ผมกำลังสร้าง Form ที่มี TAB โดยสมมุติให้ Record Source ของ Form หลักมี Field ดังนี้ครับ A1, A2, A3, A4 โดยทั้งนี้ผมได้สร้างกล่อง Combo Box เพื่อใช้สำหรับเลื่อก Filter ข้อมูลที่ฟอร์มหลักเพื่อให้ข้อมูล Row นั้นปรากฏขึ้นมาในรุปของ Single Form ครับโดยผมใช้ คำสั่ง ApplyFilter (Macro) กับ Field A1 ในส่วน AfterUpdate ที่กล่อง Combo Box ซึ่งก็สามารถคลิ๊กเลือกและข้อมูลขึ้นได้ปกติครับ แต่คราวนี้ผมกำลังจะทำต่อโดยการนำข้อมูลที่โชว์ขึ้นมาในช่อง A2 หลังจากที่ทำการคลิ๊กเลือกที่ Combo Box มาเป็น Criteria ในการ Filter กับ Subform ใน TAB ที่ 2 ซึ่งมี Field ดังนี้ครับ A2,B,C,D เพื่อให้ข้อมูลขึ้นเฉพาะตัวที่กำหนดครับแต่ผมลองใช้หลักการแบบเดิม และ link Master-Child Field ทั้งสองแบบก็ไม่ได้ผลเหมือนกันครับจึงอยากขอคำชี้แนะด้วยครับ

ผมแนบรูปมาให้ครับเพื่อเข้าใจง่ายขึ้นครับ

ขอบคุณมากครับ

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

1 @R20515
ถามเพิ่มเติมครับ
ตัวที่ใช้เป็นตัวเชื่อมระหว่าง sub form คือ A2 ตัวเดียว ใช่ไม๊ครับ แล้ว Subform อยู่อีก Tab ที่ไม่ใช่ Tab ที่เก็บข้อมูล A2 ใช่ไม๊ครับ
2 @R20516
To: คุณพ่อน้องรุ้ง

ใช่ครับคือผมจะเอาข้อมูลในช่อง A2 ที่ขึ้นมาใน TAB ที่1 มาเป็นตัว Filter ของ Subform ที่อยู่ใน TAB ที่2 ครับ รบกวนด้วยครับ
3 @R20518
อื่ม หลากหลายความต้องการ ก็ไม่รู้ว่าแบบไหนไม่ค่อยเข้าใจ เอาเป็นว่าในความต้องการบางกรณีก็ไม่จำเป็นต้องทำ link Master Child ก็ได้ ทำซับฟอร์มขึ้นมาแบบไม่ต้องผูกกับฟอร์มหลักใดๆ
ในส่วนของ Combobox ที่คุณใช้สำหรับการเลือกข้อมูล ในเหตุการณ์ After Update ก็ประมาณว่า ใน Tab1 ก็ให้ค้นหาข้อมูลไปยังฟิลด์ที่ต้องการก็พอ โดยใช้ FindRecord ธรรมดา เพราะเป็น Single Form ส่วนใน Tab2 คุณอยากให้มันใช้การกรองข้อมูล ก็ใช้การอ้างถึงซับฟอร์มจากเมนฟอร์ม จะได้โค๊ดประมาณนี้ครับ

    DoCmd.GoToControl "A1"
    DoCmd.FindRecord Me.Combo1, acEntire, False, acSearchAll, , acCurrent, True
    Forms![ชื่อMainForm]![ชื่อSubForm].Form.Filter = "[A2] =" & Me.A2
    Forms![ชื่อMainForm]![ชื่อSubForm].Form.FilterOn = True

เป็นแนวคิดคร่าวๆนะครับ ไม่รู้ว่าตรงป่าว ปรับใช้เพิ่มเติมดูครับ
4 @R20524
ไม่เคยลองทำนะครับ แต่ผมว่าน่าจะ link ไปได้เลยนะครับ โดยอ้างถึง A2 แต่ในเหตุการณ์ After Update อาจจะ requry ที A2 ก่อน ด้วยคำสั่ง docmd.requery "A2"
แต่ถ้าไม่ได้ อาจจะต้องสร้าง Text Box ในหน้า Tab ของ Subform มารับ ข้อมูล จาก A2 โดยใส่ค่าเป็น = [A2]
แล้ว link Master-Child จาก Text box ที่สร้างใหม่
   ลองดูนะครับ ผมก็ไม่ค่อยเก่งนัก เมื่อมีปัญหาก็เข้ามาขอความรู้จากที่นี่แหละครับ
5 @R20529
To: คุณพ่อน้องรุ้ง และ คุณ TTT

ขอบคุณทั้งสองคนมากครับ ตอนนี้ใช้ไอเดียจากของทางคุณ TTT นำไปประยุกต์ใช้ตอนนี้สามารถทำส่วนที่ต้องการได้แล้วครับตอนแรกน่าจะติดปัญหา Run Code ไม่ได้เพราะผมไปตั้งค่า Data Entry ผิดไปครับเลย Runcode ไม่ได้

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