กระทู้เก่าบอร์ด อ.Yeadram
1,062 7
URL.หัวข้อ /
URL
สอบถามเรื่องการจับ Record แรกและสุดท้าย
สวัสดีครับ พอดีผมสงสัยว่าพอจะมีวิธีหรือไม่ที่จะจับข้อมูลตามนี้
[ID] [NAME] [TIME]
000 นาย ก. 8:30:01 -- จับ Record แรก
000 นาย ก. 8:30:02
000 นาย ก. 8:30:03
000 นาย ก. 8:30:04 -- จับ Record สุดท้าย
111 นาย ข. 9:30:01 -- จับ Record แรก
111 นาย ข. 9:30:06
111 นาย ข. 9:30:10 -- จับ Record สุดท้าย
222 นาย ค. 9:45:01 -- จับ Record แรก
222 นาย ค. 9:45:02 -- จับ Record สุดท้าย
ทุกวันนี้ผมใช้วิธีลบ Manual อยู่ ซึ่งบางทีก็ตาลายเอามาก ๆ เลยครับ
ลองหาวิธีเขียนให้จับอันแรกกับอันสุดท้าย มันก็จับเฉพาะ 000 แรกกับ 222 สุดท้ายตลอด
พอจะมีแนวทางบ้างไหมครับ
[ID] [NAME] [TIME]
000 นาย ก. 8:30:01 -- จับ Record แรก
000 นาย ก. 8:30:02
000 นาย ก. 8:30:03
000 นาย ก. 8:30:04 -- จับ Record สุดท้าย
111 นาย ข. 9:30:01 -- จับ Record แรก
111 นาย ข. 9:30:06
111 นาย ข. 9:30:10 -- จับ Record สุดท้าย
222 นาย ค. 9:45:01 -- จับ Record แรก
222 นาย ค. 9:45:02 -- จับ Record สุดท้าย
ทุกวันนี้ผมใช้วิธีลบ Manual อยู่ ซึ่งบางทีก็ตาลายเอามาก ๆ เลยครับ
ลองหาวิธีเขียนให้จับอันแรกกับอันสุดท้าย มันก็จับเฉพาะ 000 แรกกับ 222 สุดท้ายตลอด
พอจะมีแนวทางบ้างไหมครับ
7 Reply in this Topic. Dispaly 1 pages and you are on page number 1
2 @R20781
ลองใช้คำสั่ง min กับ max ที่มีใน Queries ดูครับ
3 @R20783
โทษทีครับ ผมลืมบอกไปอีกช่อง พอดีในฟอร์มมองแค่ ID แต่มี TCID ซ่อนไว้
[TCID] [ID] [NAME] [TIME]
00020 000 นาย ก. 8:30:01 -- จับ Record แรก
00020 000 นาย ก. 8:30:02
00020 000 นาย ก. 8:30:03
00020 000 นาย ก. 8:30:04 -- จับ Record สุดท้าย
00020 111 นาย ข. 9:30:01 -- จับ Record แรก
00020 111 นาย ข. 9:30:06
00020 111 นาย ข. 9:30:10 -- จับ Record สุดท้าย
00020 222 นาย ค. 9:45:01 -- จับ Record แรก
00020 222 นาย ค. 9:45:02 -- จับ Record สุดท้าย
TCID (AutoNumber)
ID (Text)
Name (Text)
Time (Date/Time)
คือมันต้อง Select อันไหนก่อนเหรอครับระหว่าง ID กับ TCID ใน Query
เพราะ 1 Transaction จะมีข้อมูลเวลา-เข้าออกประมาณนี้ครับ
ส่วน Min Max กับเวลาผมไม่เคยใช้เลยอะครับ ลองแล้วก็ไม่ผ่าน
[TCID] [ID] [NAME] [TIME]
00020 000 นาย ก. 8:30:01 -- จับ Record แรก
00020 000 นาย ก. 8:30:02
00020 000 นาย ก. 8:30:03
00020 000 นาย ก. 8:30:04 -- จับ Record สุดท้าย
00020 111 นาย ข. 9:30:01 -- จับ Record แรก
00020 111 นาย ข. 9:30:06
00020 111 นาย ข. 9:30:10 -- จับ Record สุดท้าย
00020 222 นาย ค. 9:45:01 -- จับ Record แรก
00020 222 นาย ค. 9:45:02 -- จับ Record สุดท้าย
TCID (AutoNumber)
ID (Text)
Name (Text)
Time (Date/Time)
คือมันต้อง Select อันไหนก่อนเหรอครับระหว่าง ID กับ TCID ใน Query
เพราะ 1 Transaction จะมีข้อมูลเวลา-เข้าออกประมาณนี้ครับ
ส่วน Min Max กับเวลาผมไม่เคยใช้เลยอะครับ ลองแล้วก็ไม่ผ่าน
4 @R20804
มีใครพอช่วยได้บ้างครับ ลองมา 2 วัน ลองคิดหลาย ๆ แบบก็ยังไม่ผ่านครับ
เห็น Record เดียวบ้าง เห็น 2 อันบ้าง
ไม่รู้จะ Query ให้มันจับยังไงดี
เห็น Record เดียวบ้าง เห็น 2 อันบ้าง
ไม่รู้จะ Query ให้มันจับยังไงดี
5 @R20806
ก็อย่างที่คุณ Khomson บอกครับ ใช้ Max กับ Min ได้ครับ เช่น
ตัวอย่างที่คุณให้มานะครับ สมมุติตารางชื่อ Table1
แบบที่ 1 ทำ Group แล้วสร้างฟิลด์แสดง MIN กับ MAX
SQL:
จะได้ตารางแบบนี้:
TCID ID NAME MIN MAX
00020 000 นาย ก. 8:30:01 8:30:04
00020 111 นาย ข. 9:30:01 9:30:10
00020 222 นาย ค. 9:45:01 9:45:02
แบบที่ 2 ทำ Group สองตาราง ตัวนึงเป็น MIN ตัวนึงเป็น MAX แล้ว Union กัน
SQL:
จะได้ตารางแบบนี้:
TCID ID NAME MIN-MAX
00020 000 นาย ก. 8:30:01
00020 000 นาย ก. 8:30:04
00020 111 นาย ข. 9:30:01
00020 111 นาย ข. 9:30:10
00020 222 นาย ค. 9:45:01
00020 222 นาย ค. 9:45:02
ประมาณนี้ครับ
ตัวอย่างที่คุณให้มานะครับ สมมุติตารางชื่อ Table1
แบบที่ 1 ทำ Group แล้วสร้างฟิลด์แสดง MIN กับ MAX
SQL:
SELECT Table1.TCID, Table1.ID, Table1.NAME, Min(Table1.TIME) AS [MIN], Max(Table1.TIME) AS [MAX]
FROM Table1
GROUP BY Table1.TCID, Table1.ID, Table1.NAME;
จะได้ตารางแบบนี้:
TCID ID NAME MIN MAX
00020 000 นาย ก. 8:30:01 8:30:04
00020 111 นาย ข. 9:30:01 9:30:10
00020 222 นาย ค. 9:45:01 9:45:02
แบบที่ 2 ทำ Group สองตาราง ตัวนึงเป็น MIN ตัวนึงเป็น MAX แล้ว Union กัน
SQL:
SELECT Table1.TCID, Table1.ID, Table1.NAME, Min(Table1.TIME) AS [MIN-MAX]
FROM Table1
GROUP BY Table1.TCID, Table1.ID, Table1.NAME
UNION ALL
SELECT Table1.TCID, Table1.ID, Table1.NAME, Max(Table1.TIME) AS [MAX]
FROM Table1
GROUP BY Table1.TCID, Table1.ID, Table1.NAME
ORDER BY ID, [MIN-MAX]
จะได้ตารางแบบนี้:
TCID ID NAME MIN-MAX
00020 000 นาย ก. 8:30:01
00020 000 นาย ก. 8:30:04
00020 111 นาย ข. 9:30:01
00020 111 นาย ข. 9:30:10
00020 222 นาย ค. 9:45:01
00020 222 นาย ค. 9:45:02
ประมาณนี้ครับ
6 @R20815
เดี๋ยวผมลองดูนะครับ ถ้าติดอะไรเดี๋ยวผมมาแจ้งอีกที
แอบมึนคำสั่งนิด ๆ ^^
แอบมึนคำสั่งนิด ๆ ^^
7 @R20817
ตอนนี้ผ่านหมดและครับ
ผมเพิ่มเติมให้มี Field ที่บอกว่า อันไหนขาเข้า-ขาออก
สร้าง Expression ตัวแปร ClockResult:"IN" ใน Min
และ ClockResult:"OUT" ใน Max
ผลออกมา OK เลยครับ ขอบคุณมากครับ
ผมเพิ่มเติมให้มี Field ที่บอกว่า อันไหนขาเข้า-ขาออก
สร้าง Expression ตัวแปร ClockResult:"IN" ใน Min
และ ClockResult:"OUT" ใน Max
ผลออกมา OK เลยครับ ขอบคุณมากครับ
Time: 0.3719s
ไม่ได้ทำแบบ Datasheet
หรือจะใช้วิธีจับ Record รายการที่ 2 ของ 000 จนไปถึงรองสุดท้ายเพื่อลบก็ได้ครับ
ผมคิดได้ 2 แบบ ไม่รู้ว่าจะต้องเริ่มต้นอย่างไร