เขียนโค้ดยังไงคะ มือใหม่คะ
กระทู้เก่าบอร์ด อ.Yeadram

 2,139   5
URL.หัวข้อ / URL
เขียนโค้ดยังไงคะ มือใหม่คะ



ชื่อตารางคือ HP คะ

หากต้องการนับจำนวนเรคคอร์ดดูว่า บริษัท ไทย ออโต้ เทค จำกัด(ตามภาพคะ)
มีจำนวน HPACCT กี่ เรคคอร์ด ต้องเขียนโค้ดยังไงคะ ช่วยหน่อยคะ

ขอแบบอธิบายเป็นบรรทัดนะคะ อยากทราบรายละเอียด

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

1 @R04199
ต้องรู้ด้วยว่า ต้องการให้คำตอบที่ได้ไปโผล่ที่ไหน
เช่น ต้องการให้แสดงผลทางค?วรี่ ก็เขียน statement ว่า

select CIFNO, COUNT(*) AS CNT from hp1 where CIFNO=51000550 GROUP BY CIFNO;

เอาไปสร้างคิวรี่ครับ เมื่อแสดงผลคิวรี่ ก็จะได้จำนวนนับที่ต้องการครับ อยู่ในคอลัมภ์ที่ 2 ชื่อคอลัมภ์ว่า CNT


หรือถ้าต้องการให้ปรากฏใน textbox หน้าฟอร์ม
- สร้าง textbox เปล่าๆ ตัวหนึ่ง
- เขียนนิพจน์ใน textbox ตัวนั้นว่า
=Dcount("HPACCT","HP1","[CIFNO] = 51000550")

เมื่อรันฟอร์มแสดงผล textbox ตัวนี้ก็จะให้คำตอบที่ต้องการครับ


2 @R04208
ตอบ (R04202)
   แบบนั้นไม่ถูกต้องดีนัก
- ถ้าไม่ต้องการระบุ ให้ตัด Where ออกไปเลยครับ ไม่ต้องระบุ ดับเบิลโควต
select CIFNO, COUNT(*) AS CNT from hp1 GROUP BY CIFNO;
- ถ้าต้องการระบุเป็น cifno ตัวอื่นก็ค่อยใส่เข้าไป
select CIFNO, COUNT(*) AS CNT from hp1 where CIFNO="002255" GROUP BY CIFNO;
- หรือถ้าต้องการให้ผู้ใช้ระบุเอง ก็ให้ใช้เป็นแบบการเติมพารามิเตอร์ครับ
select CIFNO, COUNT(*) AS CNT from hp1 where CIFNO= [กรุณาระบุ CIFNO] GROUP BY CIFNO;

ตอบ (R04204)
   เกือบถูกแล้วครับ การระบุเงื่อนไขนะครับ ต้องดูว่า ฟิลด์ที่เราจะใส่เงื่อนไข เป็นชนิดข้อมูลอะไร ซึ่งผมดูจากภาพตัวอย่างที่คุณ sudteerak อัพมาให้ดูสังเกตเห็นว่า ฟิลด์ status น่าจะเก็บข้อมูลเป็น ตัวเลข เพราะฉะนั้น เมื่ออยู่ใน Where ก็ไม่ต้องใส่ เครื่องหมายฟันหนู (double quote) ในค่าของเงื่อนไขครับ

SELECT hp1.CIFNO, Count(*) AS CNT
FROM hp1 where STATUS=1 Or STATUS = 3
GROUP BY hp1.CIFNO;

หรือ
SELECT hp1.CIFNO, Count(*) AS CNT
FROM hp1 where STATUS=(1 or 3)
GROUP BY hp1.CIFNO;

หรือ
SELECT hp1.CIFNO, Count(*) AS CNT
FROM hp1 where STATUS IN(1,3)
GROUP BY hp1.CIFNO;

การเขียน statement เพื่อให้ SQL อ่านต้องระวังเรื่องเครื่องหมาย, เรื่องวรรคตอนด้วยครับ ระวังมันจะ เอ๋อเร๋อ ................. อิอิ
3 @R04223
ข้อ 1 ถึง ข้อ 2.1 เขียน statement ได้ว่า
SELECT HP.CIFNO, ACNAME, HPACCT, PDDAY
FROM HP INNER JOIN HP1 ON HP.CIFNO=HP1.CIFNO
WHERE HP1.STATUS=1 OR HP1.STATUS=3;

ส่วนข้อ 2.2 ไม่เข้าใจโจทก์ครับ
แบ่งเป็น 3 ช่วง???
แสดงผลอย่างไร???
4 @R04235
SELECT HP.CIFNO, ACNAME, HPACCT, PDDAY
iif(PDDAY=0,"Y","") AS STEP1,
iif(PDDAY>0 AND PDDAY30 AND PDDAY60 AND PDDAY90,"Y","") AS STEP5
FROM HP INNER JOIN HP1 ON HP.CIFNO=HP1.CIFNO
WHERE HP1.STATUS=1 OR HP1.STATUS=3;


คำว่า STEP1, STEP2, ....
คือคำที่สวรรค์ประทานมาในห้วงความฝัน...........
5 @R04252
SELECT HP.CIFNO, ACNAME, HPACCT, PDDAY,
iif(HP1.[PDDAY]=0,"Y","") AS STEP1,
iif(HP1.[PDDAY] > 0 AND HP1.[PDDAY] < 30, "Y","") AS STEP2,
iif(HP1.[PDDAY] >= 30 AND HP1.[PDDAY] < 60, "Y","") AS STEP3,
iif(HP1.[PDDAY] >= 60 AND HP1.[PDDAY] < 90, "Y","") AS STEP4,
iif(HP1.[PDDAY] >= 90,"Y","") AS STEP5
FROM HP INNER JOIN HP1 ON HP.CIFNO=HP1.CIFNO
WHERE HP1.STATUS=1 OR HP1.STATUS=3;


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