CANNOT DCOUNT DISTINCT
กระทู้เก่าบอร์ด อ.Yeadram

 2,373   3
URL.หัวข้อ / URL
CANNOT DCOUNT DISTINCT

ผมต้องการตรวจสอบCUSID ที่ไม่ซ้ำเพื่อออก ORDER จาก FORM DATASHEET
แต่คงออกแบบผิด หรือ ไม่รู้คำสั่ง โดยทำดังนี้
1. FORM DATASHEET แสดงJob ทั้งหมดที่ยังไม่ออก ORDER
2. field O เป็นYes/No เพื่อติ๊กเลือก RECORD ที่ต้องการจะออก ORDER
3. DCOUNT นับ โดยระบุให้ DISTINCT CUSID จาก RECORD ที่เลือก
4. ถ้าเลือก CUSID >1 ให้แจ้งและ EXIT SUB
5. ผมทำ QBE ได้
SELECT DISTINCT cID, O FROM tblAgentsInsured WHERE O=-1;

แต่เขียนคำสั่งใน FORM นับ RECORD
If DCount("distinct CID", "tblAgentsInsured", "O=-1") Then MsgBox "CID>1"

runtime ERROR 3075 syntax error (missing operator) in query expression

รบกวนอาจารย์อธิบาย การใช้ dcount distinct ด้วยครับ

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

1 @R01142
หลังจากโพสแล้ว Search Google "ms access dcount distinct"
พบข้อความน่าสนใจว่ามีการแก้หลายแบบ

1. ใช้คำสั่งซ้อน
http://www.eggheadcafe.com/software/aspnet/30302676/dcount--distinct.aspx
We all know that Dcount doesn't support DISTINCT in VBA and there are
lots of threads talking about it everywhere.

But now I've found the way to do it.
We can use the criteria string to compare results.
iCustomers = Dcount("IdCustomer","Customers","IDCustomer IN (SELECT
IdCustomer FROM Customers WHERE " & stCriteria & ")")
the key is the word IN.

2. เขียน ecount ใหม่ใช้เอง
http://allenbrowne.com/ser-66.html

ข้อ1. ดูสั้นๆ ถูกความต้องการผมขอนำไปใช้แล้วจะมารายงานผลครับ


2 @R01143
สำหรับผม ไม่เคยใช้ Dcount ควบ Distinct ครับ (เพราะไม่เคยเจองานที่จำเป็นต้องใช้)
ได้ความรู้ใหม่เพิ่มก็จาก Reply ข้างบนนี่แหละครับ

สำหรับขั้นตอนจากโจกท์
1. FORM DATASHEET แสดงJob ทั้งหมดที่ยังไม่ออก ORDER
2. field O เป็นYes/No เพื่อติ๊กเลือก RECORD ที่ต้องการจะออก ORDER
ถ้าเป็นผม จากข้อ 1. ผมจะไม่แสดง job ทั้งหมด ผมจะแสดงเฉพาะ job ที่มี CustID ไม่ซ้ำกัน หรือ....
จาก ข้อ 2. ในเหตุการณ์ขณะติ๊ก ผมจะเขียนโค้ดตรวจสอบว่า ในจำนวนตัวที่ถูกเลือกไปแล้ว มีรายการใดที่มี CustID เป็นอันเดียวกันกับตัวที่จะเลือกในปัจจุบันหรือไม่
เพราะงั้น ข้อ 3. กับข้อ 4. ก็ไม่จำเป็นต้องทำครับ
3 @R01147
ผมทำตามคำแนะนำของอาจารย์แล้วได้ผลตามต้องการ
โดยเลือกJob แล้วทำ query distinct แสดง CustID
แล้วใช้ Dcount จาก query distinct ถ้า>1 ให้ยกเลิกการ AddOrder
ขอบคุณมากครับ

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