กระทู้เก่าบอร์ด อ.Yeadram
3,784 12
URL.หัวข้อ /
URL
สอบถามเรื่องการทำรายชื่อ All ใน Combobox ครับ
ตอนนี้ผมได้สร้างฟอร์มค้นหาขึ้นมาแล้วครับโดยสร้าง Combobox 2 ชั้นสัมพันธ์กันระหว่างเขตภาคและรายชื่อผู้แทนฯ แต่หาวิธีที่จะทำให้เวลาเลือกในช่องเขตภาคเป็น All แล้วให้ช่องรายชื่อผู้แทนฯแสดงรายชื่อทั้งหมด หรือ ถ้าหากว่าไม่ได้เลือกในช่องเขตภาค จะให้รายชื่อในช่องผู้แทนฯแสดงทั้งหมด ไม่ได้ครับ
โดยตอนนี้ใช้วิธีสร้างความสัมพันธ์ตามภาพ??ี้อยู่ครับ
โดยตอนนี้ใช้วิธีสร้างความสัมพันธ์ตามภาพ??ี้อยู่ครับ
12 Reply in this Topic. Dispaly 1 pages and you are on page number 1
3 @R05275
SELECT DlrZone.DlrZone FROM DlrZone ORDER BY DlrZone.[no];
ส่วนนี้คือ combo ช่องบนครับ
SELECT DlrName.DlrName FROM DlrZone INNER JOIN DlrName ON DlrZone.DlrZone=DlrName.DlrZone WHERE (((DlrZone.DlrZone)=Forms!frmSearch!cbZone)) ORDER BY DlrName.DlrName;
ส่วนนี้เป็น combo ช่องล่างครับ
ขอบคุณอาจารย์สันติสุขมากนะครับ ผมได้ลองทำตามลิ้งค์แล้วแต่ไม่ได้ครับ เพราะผมไม่มีความชำนาญทางด้านนี้เลย
SELECT DlrZone.DlrZone FROM DlrZone ORDER BY DlrZone.[no];
ส่วนนี้คือ combo ช่องบนครับ
SELECT DlrName.DlrName FROM DlrZone INNER JOIN DlrName ON DlrZone.DlrZone=DlrName.DlrZone WHERE (((DlrZone.DlrZone)=Forms!frmSearch!cbZone)) ORDER BY DlrName.DlrName;
ส่วนนี้เป็น combo ช่องล่างครับ
ขอบคุณอาจารย์สันติสุขมากนะครับ ผมได้ลองทำตามลิ้งค์แล้วแต่ไม่ได้ครับ เพราะผมไม่มีความชำนาญทางด้านนี้เลย
4 @R05276
คอมโบตัวบน เปลี่ยนเป็น
SELECT "*" AS NM, "ALL" AS DlrZone From DlrZone
UNION
SELECT DlrZone.DlrZone as NM, DlrZone.DlrZone FROM DlrZone
ORDER BY DlrZone.[no];
- ปรับแต่งคุณสมบัติของ คอมโบตัวบน เป็น 2 คอลัมน์
- ความกว้างคอลัมน์ 0;3
- คอลัมน์ที่ถูกผูก ให้เลือก 1
คอมโบตัวล่างเปลี่ยนเป็น
SELECT DlrName.DlrName FROM DlrZone INNER JOIN DlrName ON DlrZone.DlrZone=DlrName.DlrZone WHERE (((DlrZone.DlrZone) Like Forms!frmSearch!cbZone)) ORDER BY DlrName.DlrName;
เขียนสดหน้าเว็บนะครับไม่ได้ทดสอบ ถ้าติด error ใดๆ ช่วยจับ error มาดูด้วยนะครับ
วิธีนี้ผมไม่ถนัดเลย (การเล่นกับคิวรี่+พารามิเตอร์เนี่ย) ถ้ายังแก้ไม่ได้คงต้องใช้วิธีที่ถนัดครับ (เขียนโค้ด)
SELECT "*" AS NM, "ALL" AS DlrZone From DlrZone
UNION
SELECT DlrZone.DlrZone as NM, DlrZone.DlrZone FROM DlrZone
ORDER BY DlrZone.[no];
- ปรับแต่งคุณสมบัติของ คอมโบตัวบน เป็น 2 คอลัมน์
- ความกว้างคอลัมน์ 0;3
- คอลัมน์ที่ถูกผูก ให้เลือก 1
คอมโบตัวล่างเปลี่ยนเป็น
SELECT DlrName.DlrName FROM DlrZone INNER JOIN DlrName ON DlrZone.DlrZone=DlrName.DlrZone WHERE (((DlrZone.DlrZone) Like Forms!frmSearch!cbZone)) ORDER BY DlrName.DlrName;
เขียนสดหน้าเว็บนะครับไม่ได้ทดสอบ ถ้าติด error ใดๆ ช่วยจับ error มาดูด้วยนะครับ
วิธีนี้ผมไม่ถนัดเลย (การเล่นกับคิวรี่+พารามิเตอร์เนี่ย) ถ้ายังแก้ไม่ได้คงต้องใช้วิธีที่ถนัดครับ (เขียนโค้ด)
5 @R05281
"The ORDER By expression (DlrZone.[no]) includes fields that are not selected by the query. Only those fields requested in the the first query can be included in an ORDER BY expression."
ตอนนี้ถ้าไปเลือกรายการทีคอมโบช่องบนจะขึ้นข้อความตามข้างบนนี้ครับ
แต่ถ้าผมลองเอาในส่วนสีแดงออกถึงจะใช้ได้ แต่ว่าจะไม่มีการเรียงลำดับข้อมูล
SELECT "*" AS NM, "ALL" AS DlrZone From DlrZone
UNION
SELECT DlrZone.DlrZone as NM, DlrZone.DlrZone FROM DlrZone
ORDER BY DlrZone.[no];
ตอนนี้ถ้าไปเลือกรายการทีคอมโบช่องบนจะขึ้นข้อความตามข้างบนนี้ครับ
แต่ถ้าผมลองเอาในส่วนสีแดงออกถึงจะใช้ได้ แต่ว่าจะไม่มีการเรียงลำดับข้อมูล
SELECT "*" AS NM, "ALL" AS DlrZone From DlrZone
UNION
SELECT DlrZone.DlrZone as NM, DlrZone.DlrZone FROM DlrZone
ORDER BY DlrZone.[no];
6 @R05283
ลองเปลียนอีกรอบครับ
เพราะเราต้องการเรียงลำดับก็เพิ่มฟิลด์เข้ามาเพื่อให้เรียงลำดับ
เพราะเราต้องการเรียงลำดับก็เพิ่มฟิลด์เข้ามาเพื่อให้เรียงลำดับ
SELECT "*" AS NM, "ALL" AS DlrZone, 0 as [no]
From DlrZone
UNION
SELECT DlrZone.DlrZone as NM, DlrZone.DlrZone, DlrZone.[no]
FROM DlrZone
ORDER BY [no];
7 @R05286
ใช้ได้แล้วครับ
ขอบคุณมากเลยครับ ไม่ทราบว่ามีคอร์สสอนที่ไหนมั๊ยครับรบกวนอาจารย์หลายรอบแล้วอยากไปสมัครเป็นลูกศิษย์
ขอบคุณมากเลยครับ ไม่ทราบว่ามีคอร์สสอนที่ไหนมั๊ยครับรบกวนอาจารย์หลายรอบแล้วอยากไปสมัครเป็นลูกศิษย์
8 @R05292
ถามอาจารย์เพิ่มหน่อยครับ ขอโทษที่ผมไม่ได้บอกรายละเอียดตั้งแต่แรก
คือฟอร์มที่ผมถามในครั้งนี้เป็นฟอร์มสำหรับค้นหาเพื่อให้ฟอร์มหลักถัดไปแสดงข้อมูลตามที่ต้องการ
แต่เวลาใช้งานแล้วถ้าเลือกเขตในคอมโบตัวบนเป็น "ALL" แล้วเลือกรายชื่อในช่องคอมโบตัวล่างก็เลือกได้ตามปกติ แต่พอกดค้นหาแล้วหน้าถัดไปจะไม่แสดงข้อมูลเป็น ฟอร์มเปล่าครับ
แต่ถ้าใช้งานอย่างอื่นยกเว้นใช้ "ALL" ก็จะค้นหาข้อมูลได้ตามปกติ
ถ้ายังไงรบกวนอาจารย์เพิ่มด้วยนะครับ ผมลองค้นหากระทู้ที่เกี่ยวกับเรื่องนี้แล้วแต่ก็ไม่เข้าใจสักที
คือฟอร์มที่ผมถามในครั้งนี้เป็นฟอร์มสำหรับค้นหาเพื่อให้ฟอร์มหลักถัดไปแสดงข้อมูลตามที่ต้องการ
แต่เวลาใช้งานแล้วถ้าเลือกเขตในคอมโบตัวบนเป็น "ALL" แล้วเลือกรายชื่อในช่องคอมโบตัวล่างก็เลือกได้ตามปกติ แต่พอกดค้นหาแล้วหน้าถัดไปจะไม่แสดงข้อมูลเป็น ฟอร์มเปล่าครับ
แต่ถ้าใช้งานอย่างอื่นยกเว้นใช้ "ALL" ก็จะค้นหาข้อมูลได้ตามปกติ
ถ้ายังไงรบกวนอาจารย์เพิ่มด้วยนะครับ ผมลองค้นหากระทู้ที่เกี่ยวกับเรื่องนี้แล้วแต่ก็ไม่เข้าใจสักที
9 @R05293
เลิกใช้วิธี (คิวรี่ + พารามิเตอร์) มันไม่ยืดหยุ่นพอ
- เดาว่าในฟอร์มปลายทางของคุณใช้ คิวรี่เป็นแหล่งข้อมูล
และในคิวรี่ตัวนั้นมีพารามิเตอร์ ให้อ้างจากคอนโทรลในฟอร์มปัจจุบัน
แล้วใช้ operator = แทนที่จะใช้ operator Like
หันมาใช้วิธีเขียนโค้ดดีกว่าครับ
- ไปเอาพารามิเตอร์ออกจากแหล่งข้อมูลของฟอร์มปลายทาง
ให้มันเป็นฟอร์มที่แหล่งข้อมูล แต่ไม่มีเงื่อนไข ไว้ก่อน
- ทีนี้ เวลาต้องการเปิดฟอร์ม ให้ใช้คำสั่งเปิดฟอร์ม คล้ายๆ อย่างนี้
docmd.openform "form1",,,"[ฟิลด์1] Like '" & me.combo1 & "'"
เห็นไหมครับสิ่งที่ส่งเข้าไปพร้อมกับคำสั่งเปิดฟอร์ม นั่นแหละครับเงื่อนไข
- เดาว่าในฟอร์มปลายทางของคุณใช้ คิวรี่เป็นแหล่งข้อมูล
และในคิวรี่ตัวนั้นมีพารามิเตอร์ ให้อ้างจากคอนโทรลในฟอร์มปัจจุบัน
แล้วใช้ operator = แทนที่จะใช้ operator Like
หันมาใช้วิธีเขียนโค้ดดีกว่าครับ
- ไปเอาพารามิเตอร์ออกจากแหล่งข้อมูลของฟอร์มปลายทาง
ให้มันเป็นฟอร์มที่แหล่งข้อมูล แต่ไม่มีเงื่อนไข ไว้ก่อน
- ทีนี้ เวลาต้องการเปิดฟอร์ม ให้ใช้คำสั่งเปิดฟอร์ม คล้ายๆ อย่างนี้
docmd.openform "form1",,,"[ฟิลด์1] Like '" & me.combo1 & "'"
เห็นไหมครับสิ่งที่ส่งเข้าไปพร้อมกับคำสั่งเปิดฟอร์ม นั่นแหละครับเงื่อนไข
10 @R05300
พอดีผมไม่เข้าใจคำว่า "ให้มันเป็นฟอร์มที่แหล่งข้อมูล แต่ไม่มีเงื่อนไข" อยู่นิดหน่อยครับ ผมต้องไปเอาออกให้หมดรวมทั้ง "Control Source" ด้วยหรือเปล่าครับ
11 @R05301
ผมพิมพ์ตกครับ ขออภัย
"ให้มันเป็นฟอร์มที่มีแหล่งข้อมูล แต่ไม่มีเงื่อนไข"
ไม่เกี่ยวกับ control source ครับ พวกนั้นเอาไว้อย่างเดิม
แหล่งข้อมูลของฟอร์มของคุณคือ ตาราง หรือคิวรี่ครับ
ถ้าแหล่งข้อมูลของคุณเป็นตาราง ก็ข้ามไปประเด็นอื่นได้เลยครับ (แสดงว่าผมเดาผิด)
ถ้าแหล่งข้อมูลของคุณเป็นคิวรี่ ให้ดูว่าคิวรี่ของคุณมีพารามิเตอร์ หรือไม่ ถ้ามีให้ไปเอาออกครับ (ส่วนของฟอร์มไม่ต้องปรับแต่งอะไรครับ)
ถ้าไม่แน่ใจว่าต้องเอาอะไรออก ก็ลองคัดลอก SQL ของคิวรี่เอามาให้ดูหน่อยก็ได้ครับ
"ให้มันเป็นฟอร์มที่มีแหล่งข้อมูล แต่ไม่มีเงื่อนไข"
ไม่เกี่ยวกับ control source ครับ พวกนั้นเอาไว้อย่างเดิม
แหล่งข้อมูลของฟอร์มของคุณคือ ตาราง หรือคิวรี่ครับ
ถ้าแหล่งข้อมูลของคุณเป็นตาราง ก็ข้ามไปประเด็นอื่นได้เลยครับ (แสดงว่าผมเดาผิด)
ถ้าแหล่งข้อมูลของคุณเป็นคิวรี่ ให้ดูว่าคิวรี่ของคุณมีพารามิเตอร์ หรือไม่ ถ้ามีให้ไปเอาออกครับ (ส่วนของฟอร์มไม่ต้องปรับแต่งอะไรครับ)
ถ้าไม่แน่ใจว่าต้องเอาอะไรออก ก็ลองคัดลอก SQL ของคิวรี่เอามาให้ดูหน่อยก็ได้ครับ
12 @R05304
ได้แล้วครับขอบคุณมากครับอ.yeadram
DoCmd.OpenForm "form2", acNormal, , "([เขตภาค] = '" & Me.cbเขตภาค & "') and([รายชื่อ] = '" & Me.cbรายชื่อ & "')"
ผมได้ลองตัดส่วนของสีน้ำเงินในส่วนของฟอร์มที่ใช้ค้นหาข้อมูลออกถึงจะใช้งานในฟอร์มค้นหาแบบมี "ALL" ได้ โดยให้เป็นใช้เงื่อนไขเดียวในการค้นหาคือรายชื่ออย่างเดียวตัดส่วนของเขตภาคออกไป
แต่ไม่แน่ใจว่าจะมีผลอะไรหรือเปล่าเพราะผมเห็นว่ามันใช้งานได้แล้ว รบกวนอาจารย์ช่วยดูให้ด้วยนะครับ
DoCmd.OpenForm "form2", acNormal, , "([เขตภาค] = '" & Me.cbเขตภาค & "') and([รายชื่อ] = '" & Me.cbรายชื่อ & "')"
ผมได้ลองตัดส่วนของสีน้ำเงินในส่วนของฟอร์มที่ใช้ค้นหาข้อมูลออกถึงจะใช้งานในฟอร์มค้นหาแบบมี "ALL" ได้ โดยให้เป็นใช้เงื่อนไขเดียวในการค้นหาคือรายชื่ออย่างเดียวตัดส่วนของเขตภาคออกไป
แต่ไม่แน่ใจว่าจะมีผลอะไรหรือเปล่าเพราะผมเห็นว่ามันใช้งานได้แล้ว รบกวนอาจารย์ช่วยดูให้ด้วยนะครับ
Time: 0.3583s
มันจะเขียนเป็นสายอักขระ SQL
ก็อบปี้มันมาทั้งหมดเลยครับ ขอดูหน่อย