กระทู้เก่าบอร์ด อ.Yeadram
        
           6,057   21		  
          
					  
		    URL.หัวข้อ / 
		    URL
        
        สอบถามเรื่อง combobox      
    
       คือว่าผมต้องการให้ใน combobox มีตัวเลือก All เพื่อเอาไว้คิวรี่หาข้อมูลที่มีทั้งหมดในตัวเลือกของ combobox   เช่น  ในcombobox มีเพศ ชาย,หญิง ก็จะเลือกได้เฉพาะชาย หรือหญิง  แต่ถ้าผมอยากได้ทั้งชายและ หญิงเลย จะเพิ่มตัวเลือก All ขึ้นมา ต้องทำยังไงบ้าง ช่วยหน่อยครับ    
    
  
				21 Reply in this Topic. Dispaly 2  pages and you are on page number 1 
				
        
    1 @R03075    
        
  
      ไม่มีใครตอบได้เลยหรือ 
    
    
   
    
        
    2 @R03077    
        
  
      กำหนดที่ ชนิดแหล่งข้อมูลแถว =Value List
กำหนด แหล่งข้อมูลแถว ="All";"ชาย";"หญิง"
ที่ Combobox สมมติ ชื่อเป็น Combo0 เขียนคำสั่ง
 
Private Sub Combo0_AfterUpdate()
if not isnull(combo0.value) then
Select Case Combo0.ListIndex
Case 0
' อยากทำอไรก็ได้ตามใจตัวเอง
MsgBox "ALL"
Case 1
MsgBox "MALE"
Case 2
MsgBox "FEMALE"
End Select
end if
End Sub
    
    
  กำหนด แหล่งข้อมูลแถว ="All";"ชาย";"หญิง"
ที่ Combobox สมมติ ชื่อเป็น Combo0 เขียนคำสั่ง
Private Sub Combo0_AfterUpdate()
if not isnull(combo0.value) then
Select Case Combo0.ListIndex
Case 0
' อยากทำอไรก็ได้ตามใจตัวเอง
MsgBox "ALL"
Case 1
MsgBox "MALE"
Case 2
MsgBox "FEMALE"
End Select
end if
End Sub
        
    3 @R03078    
        
  
      คือว่า เพศ ชายหญิงเนี่ยผมดึงมาจากตารางข้อมูลอะครับ เวลาเรา 
"คิวรี่" หาเพศ มันก็จะได้ แค่ชายกับหญิงเท่านั้นครับ แต่ว่าถ้าผมต้องการเลือกทั้งหมดอะครับ ทั้งชายและหญิง ครับ
นี่ คือ ที่ผม กำหนด แหล่งข้อมูลแถว= SELECT RELIGION.sex FROM RELIGION GROUP BY RELIGION.sex ;
ต้องเพิ่มยังไงบ้างครับ อธิบายหน่อยครับ แบบละเอียดนะ ผมไม่ค่อยเก่งอะครับ
    
  "คิวรี่" หาเพศ มันก็จะได้ แค่ชายกับหญิงเท่านั้นครับ แต่ว่าถ้าผมต้องการเลือกทั้งหมดอะครับ ทั้งชายและหญิง ครับ
นี่ คือ ที่ผม กำหนด แหล่งข้อมูลแถว= SELECT RELIGION.sex FROM RELIGION GROUP BY RELIGION.sex ;
ต้องเพิ่มยังไงบ้างครับ อธิบายหน่อยครับ แบบละเอียดนะ ผมไม่ค่อยเก่งอะครับ
        
    4 @R03079    
        
  
      ถ้านำเข้า โดยกำหนด ชนิดแหล่งข้อมูลเป็น ตารางหรือแบบสอบถาม
- ต้องกำหนด "All" เข้าในฐานข้อมูล ด้วยครับ
ถ้านำเข้า โดยกำหนด ชนิดแหล่งข้อมูลเป็น Value List
- เขียน Code นำข้อมูลจากตารางมา Add เข้าใน Combobox แล้วเพิ่ม
All เข้าไป หรืออาจไม่เพิ่ม All กรณีมี All อยู่ในตารางอยู่แล้ว
เขียนคำสั่ง เพิ่มเติม
   
Private Sub Combo0_AfterUpdate()
if not isnull(combo0.value) then
Select Case Combo0.Value
Case "All"
' อยากทำอไรก็ได้ตามใจตัวเอง
MsgBox "ALL"
Case "ชาย"
MsgBox "MALE"
Case "หญิง"
MsgBox "FEMALE"
End Select
end if
End Sub
ไม่ทราบพอเข้าใจ Concept หรือเปล่าครับ
    
    
  - ต้องกำหนด "All" เข้าในฐานข้อมูล ด้วยครับ
ถ้านำเข้า โดยกำหนด ชนิดแหล่งข้อมูลเป็น Value List
- เขียน Code นำข้อมูลจากตารางมา Add เข้าใน Combobox แล้วเพิ่ม
All เข้าไป หรืออาจไม่เพิ่ม All กรณีมี All อยู่ในตารางอยู่แล้ว
เขียนคำสั่ง เพิ่มเติม
Private Sub Combo0_AfterUpdate()
if not isnull(combo0.value) then
Select Case Combo0.Value
Case "All"
' อยากทำอไรก็ได้ตามใจตัวเอง
MsgBox "ALL"
Case "ชาย"
MsgBox "MALE"
Case "หญิง"
MsgBox "FEMALE"
End Select
end if
End Sub
ไม่ทราบพอเข้าใจ Concept หรือเปล่าครับ
        
    5 @R03080    
        
  
      เข้าใจแล้วครับ ขอบคุณมาก จะได้ไปประยุกใช้ครับ
    
    
  
        
    6 @R03089    
        
  
      ขออนุญาตเพิ่มเติมครับ
การเพิ่ม "All" แบบลัด
กำหนดทุกอย่างตามที่??คยทำครับ ตรง Rowsource เขียนเป็น union query ดังนี้ครับ
SELECT "All" as sex FROM RELIGION
UNION
SELECT RELIGION.sex FROM RELIGION GROUP BY RELIGION.sex;
ลองดูครับ
    
    
  การเพิ่ม "All" แบบลัด
กำหนดทุกอย่างตามที่??คยทำครับ ตรง Rowsource เขียนเป็น union query ดังนี้ครับ
SELECT "All" as sex FROM RELIGION
UNION
SELECT RELIGION.sex FROM RELIGION GROUP BY RELIGION.sex;
ลองดูครับ
        
    7 @R21848    
        
  
      ลองทำตามนี้แล้ว  เวลาเลือก  All  ไม่แสดงข้อมูลเลยครับ  ไม่ทราบว่าเป็นเพราะเหตุใดครับ
SELECT "All" as sex FROM RELIGION
UNION
SELECT RELIGION.sex FROM RELIGION GROUP BY RELIGION.sex;
ของผมกำหนดที่ Rowsource เป็น
SELECT "All" as p_province FROM student_no Union SELECT student_no.p_province FROM student_no GROUP BY student_no.p_province;
และอีกอย่างผมไม่เข้าใจคำว่า - ต้องกำหนด "All" เข้าในฐานข้อมูล ด้วยครับ
    
  SELECT "All" as sex FROM RELIGION
UNION
SELECT RELIGION.sex FROM RELIGION GROUP BY RELIGION.sex;
ของผมกำหนดที่ Rowsource เป็น
SELECT "All" as p_province FROM student_no Union SELECT student_no.p_province FROM student_no GROUP BY student_no.p_province;
และอีกอย่างผมไม่เข้าใจคำว่า - ต้องกำหนด "All" เข้าในฐานข้อมูล ด้วยครับ
        
    8 @R21849    
        
       
เลือกตัวอื่นๆ แสดงหมด ยกเว้น All
    
  
   
เลือกตัวอื่นๆ แสดงหมด ยกเว้น All
        
    9 @R21854    
        
  
      คุณใช้โค้ด,คิวรี่อะไรบ้าง เพื่อที่เมื่อเลือกคำว่า "ชาย" แล้ว ข้อมูลในตารางทางฝั่งขวาถึงแสดงออกมาให้ตามต้องการ    
    
  
        
    10 @R21858    
        
  
      โค๊ด combo Box
Private Sub Cbofprovince_AfterUpdate()
DoCmd.Requery qrf_province_m1noi
End Sub
คิวรี่ ตามภาพครับ
 
กำหนดที่ Rowsource เป็น
SELECT "All" as p_province FROM student_no Union SELECT student_no.p_province FROM student_no GROUP BY student_no.p_province;
 
ส่วนคำว่าชาย หญิง รวม เป็นการนับว่า เมื่อเลือกจังหวัด เช่น ขอนแก่น จะมีชายหญิงกี่คน รวมเท่าไหร่ครับ
*****คือผมทดลองเอามาประยุกต์ใช้ ให้มีคำว่า All แล้วต้องการให้ตารางทางฝั่งขวา เมื่อ เลือก All จะขึ้นข้อมูลทุกจังหวัดครับ *****
    
    
  Private Sub Cbofprovince_AfterUpdate()
DoCmd.Requery qrf_province_m1noi
End Sub
คิวรี่ ตามภาพครับ
 
กำหนดที่ Rowsource เป็น
SELECT "All" as p_province FROM student_no Union SELECT student_no.p_province FROM student_no GROUP BY student_no.p_province;
 
ส่วนคำว่าชาย หญิง รวม เป็นการนับว่า เมื่อเลือกจังหวัด เช่น ขอนแก่น จะมีชายหญิงกี่คน รวมเท่าไหร่ครับ
*****คือผมทดลองเอามาประยุกต์ใช้ ให้มีคำว่า All แล้วต้องการให้ตารางทางฝั่งขวา เมื่อ เลือก All จะขึ้นข้อมูลทุกจังหวัดครับ *****
        
    11 @R21859    
        
  
      มันกลายเป็นภาพเดียวกันหมดเลย เอาใหม่ครับ
คิวรี่ ชื่อ qrf_province_m1noi ตามภาพครับ
 
    
    
  คิวรี่ ชื่อ qrf_province_m1noi ตามภาพครับ
 
    
        
    12 @R21860    
        
  
      ตารางด้านขวาผูกเข้ากับคิวรี่ qrf_province_m1noi ซึ่งคิวรี่ก็มีเงื่อนไขเลือกเอาเรคอร์ดที่ฟิลด์จังหวัดมีค่าเท่ากับในคอมโบบ็อกซ์  ดังนั้นเวลาเลือกจังหวัดต่างๆ ตารางก็แสดงได้ถูกต้อง แต่พอเลือก All ซึ่งคำว่า All นี้ไม่ได้เป็นจังหวัดอะไรในเทเบิล ก็จะไม่มีผลลัพธ์อะไรแสดงออกมา นั่นคือเหตุที่ทำไมถึงเขียนว่า "ต้องกำหนด "All" เข้าในฐานข้อมูล ด้วยครับ"  แต่ในกรณีข้อมูลแบบนี้ เราไม่สามารถกำหนด All ลงในเทเบิลได้  จะเห็นได้ว่าปัญหาคือเงื่อนไขในคิวรี่ที่กำหนดตายตัวให้ต้องเทียบค่ากับคอมโบบ็อกซ์ แต่คิวรี่ก็ไม่สามารถถูกกำหนดให้เทียบกับคอมโบเมื่อจังหวัดที่เลือกไม่เป็น All และไม่ให้เทียบเมื่อจังหวัดที่เลือกเป็น All (เมื่อไม่เทียบ ทุกเรคอร์ดก็ย่อมแสดงออกมา เปรียบเสมือนเป็นการเลือก All) 
ทางเลือกก็คือ
1. แก้ให้คิวรี่ไม่ต้องเทียบเงื่อนไขกับคอมโบ แต่หลังจาก requery แล้ว ให้ใช้ .Filter เพื่อกรองเอาเฉพาะจังหวัดที่ต้องการแทน หรือถ้าเลือก All ก็ไม่ต้องกรองอะไรเลย โค้ดก็เป็นลักษณะนี้คือ
2. กำหนด RecordSource ของฟอร์ม frmf_province_m1noi ให้เป็น SQL SELECT statement เหมือนในคิวรี่ ซึ่งต้องสร้าง SQL ให้มีเงื่อนไขการเปรียบเทียบ หรือไม่เปรียบเทียบ (กรณีเลือกเป็น All) ให้เรียบร้อยก่อน ตัวอย่างก็เช่น ในกระทู้ http://www.thai-access.com/yeadram_view.php?topic_id=5008 ลักษณะคล้ายๆกันเลย
    
  ทางเลือกก็คือ
1. แก้ให้คิวรี่ไม่ต้องเทียบเงื่อนไขกับคอมโบ แต่หลังจาก requery แล้ว ให้ใช้ .Filter เพื่อกรองเอาเฉพาะจังหวัดที่ต้องการแทน หรือถ้าเลือก All ก็ไม่ต้องกรองอะไรเลย โค้ดก็เป็นลักษณะนี้คือ
Private Sub Cbofprovince_AfterUpdate()
   DoCmd.Requery qrf_province_m1noi
   if Me.Cbofprovince <> "All" then
      Forms("frmf_province_m1noi").Filter = "p_province = """ + Me.Cbofprovince + """ "
      Forms("frmf_province_m1noi").FilterOn = True
   else
      Forms("frmf_province_m1noi").Filter = ""
      Forms("frmf_province_m1noi").FilterOn = False
   end if
End Sub
2. กำหนด RecordSource ของฟอร์ม frmf_province_m1noi ให้เป็น SQL SELECT statement เหมือนในคิวรี่ ซึ่งต้องสร้าง SQL ให้มีเงื่อนไขการเปรียบเทียบ หรือไม่เปรียบเทียบ (กรณีเลือกเป็น All) ให้เรียบร้อยก่อน ตัวอย่างก็เช่น ในกระทู้ http://www.thai-access.com/yeadram_view.php?topic_id=5008 ลักษณะคล้ายๆกันเลย
        
    13 @R21887    
        
  
      อาจารย์ครับ ผมยังไม่เข้าใจ ตรงข้อ 2 ที่ว่า
2. กำหนด RecordSource ของฟอร์ม frmf_province_m1noi ให้เป็น SQL SELECT statement เหมือนในคิวรี่ ซึ่งต้องสร้าง SQL ให้มีเงื่อนไขการเปรียบเทียบ หรือไม่เปรียบเทียบ (กรณีเลือกเป็น All) ให้เรียบร้อยก่อน
    
  2. กำหนด RecordSource ของฟอร์ม frmf_province_m1noi ให้เป็น SQL SELECT statement เหมือนในคิวรี่ ซึ่งต้องสร้าง SQL ให้มีเงื่อนไขการเปรียบเทียบ หรือไม่เปรียบเทียบ (กรณีเลือกเป็น All) ให้เรียบร้อยก่อน
        
    14 @R21888    
        
  
      ก็เป็น
Private Sub Cbofprovince_AfterUpdate()
if Me.Cbofprovince <> "All" then
Forms("frmf_province_m1noi").RecordSource = "select ... from ... where p_province = """ + Me.Cbofprovince + """ "
else
Forms("frmf_province_m1noi").RecordSource = "select ... from ... "
end if
End Sub
ตรงที่เป็น select ... from ... คุณก็เข้าไปที่คิวรี่ qrf_province_m1noi แล้วแสดงในโหมด SQL View แล้วก็ก็อปปี้เอาเฉพาะส่วนนี้ที่ไม่รวม where ครับ
    
  Private Sub Cbofprovince_AfterUpdate()
if Me.Cbofprovince <> "All" then
Forms("frmf_province_m1noi").RecordSource = "select ... from ... where p_province = """ + Me.Cbofprovince + """ "
else
Forms("frmf_province_m1noi").RecordSource = "select ... from ... "
end if
End Sub
ตรงที่เป็น select ... from ... คุณก็เข้าไปที่คิวรี่ qrf_province_m1noi แล้วแสดงในโหมด SQL View แล้วก็ก็อปปี้เอาเฉพาะส่วนนี้ที่ไม่รวม where ครับ
        
    15 @R21889    
        
  
      เรียน อ.สันติสุข  ปกติ มันเป็นดังรูป    แล้วอาจารย์บอกว่า ก็ก็อปปี้เอาเฉพาะส่วนนี้ที่ไม่รวม where  มันคือจากไหนถึงไหนครับ  ขอโทษน๊ะครับ ที่ผมไม่ทราบจริงๆครับ มือใหม่
 
    
    
   
    
        
    16 @R21890    
        
  
      SELECT M1_noi.pin, M1_noi.number_sob, student_No.prefix, student_No.FirstName, student_No.LastName, student_No.TSEX, student_No.P_TUMBOL, student_No.P_AMPHUR, student_No.P_PROVINCE, student_No.TSEX
FROM student_No INNER JOIN M1_noi ON student_No.pin = M1_noi.pin
WHERE (((student_No.P_PROVINCE)=[Forms]![frmf_province_m1noi]![Cbofprovince]))
ORDER BY M1_noi.number_sob;
แก้ตรงไหนบ้างครับ
    
  FROM student_No INNER JOIN M1_noi ON student_No.pin = M1_noi.pin
WHERE (((student_No.P_PROVINCE)=[Forms]![frmf_province_m1noi]![Cbofprovince]))
ORDER BY M1_noi.number_sob;
แก้ตรงไหนบ้างครับ
        
    17 @R21891    
        
  
      ตรงนี้ครับ 
(((student_No.P_PROVINCE)=[Forms]![frmf_province_m1noi]![Cbofprovince]))
เปลี่ยนเป็น
Forms("frmf_province_m1noi").RecordSource = "select ... from ... where student_No.P_PROVINCE = """ + Me.Cbofprovince + """ ORDER BY ... "
    
  (((student_No.P_PROVINCE)=[Forms]![frmf_province_m1noi]![Cbofprovince]))
เปลี่ยนเป็น
Forms("frmf_province_m1noi").RecordSource = "select ... from ... where student_No.P_PROVINCE = """ + Me.Cbofprovince + """ ORDER BY ... "
        
    18 @R21892    
        
  
      ผมเปลี่ยนเป็น
SELECT M1_noi.pin, M1_noi.number_sob, student_No.prefix, student_No.FirstName, student_No.LastName, student_No.TSEX, student_No.P_TUMBOL, student_No.P_AMPHUR, student_No.P_PROVINCE, student_No.TSEX
FROM student_No INNER JOIN M1_noi ON student_No.pin = M1_noi.pin
WHERE Forms("frmf_province_m1noi").RecordSource = "select P_PROVINCE from M1_noi where student_No.P_PROVINCE = """ + Me.Cbofprovince + """ ORDER BY M1_noi.number_sob ";
แล้วพอเปิด from frmf_province_m1noi มันฟ้องว่าตามรูปครับ
 
    
    
  SELECT M1_noi.pin, M1_noi.number_sob, student_No.prefix, student_No.FirstName, student_No.LastName, student_No.TSEX, student_No.P_TUMBOL, student_No.P_AMPHUR, student_No.P_PROVINCE, student_No.TSEX
FROM student_No INNER JOIN M1_noi ON student_No.pin = M1_noi.pin
WHERE Forms("frmf_province_m1noi").RecordSource = "select P_PROVINCE from M1_noi where student_No.P_PROVINCE = """ + Me.Cbofprovince + """ ORDER BY M1_noi.number_sob ";
แล้วพอเปิด from frmf_province_m1noi มันฟ้องว่าตามรูปครับ
 
    
        
    19 @R21893    
        
  
      ไม่ใช่เอาที่เปลี่ยนไปแก้ไขในคิวรี่ครับ ให้เอาที่เปลี่ยนมาใส่ในโค้ดในคำตอบ R2188 ครับ ค่อยๆอ่านทั้งหมดอีกที    
    
  
        
    20 @R21970    
        
      
	  
      
    
      ทำได้แล้วครับ อาจารย์ขอบคุณอ.สันติสุขมากครับ
แต่ยังติดตรงปัญหา เมื่อเลือกจังหวัดต่างๆ ผลการนับเพศ ชาย หญิง รวม ถูกต้อง ครับ
แต่ถ้าเลือก All ผลการนับจำนวนเพศชาย หญิง รวม ออกมาเป็น 0 หมดครับ
- ผมใช้สูตรการนับเพศชาย ที่ control source คือ =DCount("[Tsex]","[qrf_Province_m1nok]","[Tsex] = 'ชาย'")
- ใช้สูตรการนับเพศหญิง ที่ control source คือ =DCount("[Tsex]","[qrf_Province_m1nok]","[Tsex] = 'หญิง'")
- ใช้สูตรการนับรวม ที่ control source คือ =DCount("[Tsex]","[qrf_Province_m1nok]","[Tsex] = 'ชาย' OR [Tsex] = 'หญิง'")
    
  แต่ยังติดตรงปัญหา เมื่อเลือกจังหวัดต่างๆ ผลการนับเพศ ชาย หญิง รวม ถูกต้อง ครับ
แต่ถ้าเลือก All ผลการนับจำนวนเพศชาย หญิง รวม ออกมาเป็น 0 หมดครับ
- ผมใช้สูตรการนับเพศชาย ที่ control source คือ =DCount("[Tsex]","[qrf_Province_m1nok]","[Tsex] = 'ชาย'")
- ใช้สูตรการนับเพศหญิง ที่ control source คือ =DCount("[Tsex]","[qrf_Province_m1nok]","[Tsex] = 'หญิง'")
- ใช้สูตรการนับรวม ที่ control source คือ =DCount("[Tsex]","[qrf_Province_m1nok]","[Tsex] = 'ชาย' OR [Tsex] = 'หญิง'")
      Time: 0.0540s
    
      
		