สอบถามเรื่องการจับ Record แรกและสุดท้าย
กระทู้เก่าบอร์ด อ.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 สุดท้ายตลอด

พอจะมีแนวทางบ้างไหมครับ

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

1 @R20780
อ๋อ ผม Create เป็น Subform นะครับ
ไม่ได้ทำแบบ Datasheet

หรือจะใช้วิธีจับ Record รายการที่ 2 ของ 000 จนไปถึงรองสุดท้ายเพื่อลบก็ได้ครับ
ผมคิดได้ 2 แบบ ไม่รู้ว่าจะต้องเริ่มต้นอย่างไร
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 กับเวลาผมไม่เคยใช้เลยอะครับ ลองแล้วก็ไม่ผ่าน
4 @R20804
มีใครพอช่วยได้บ้างครับ ลองมา 2 วัน ลองคิดหลาย ๆ แบบก็ยังไม่ผ่านครับ
เห็น Record เดียวบ้าง เห็น 2 อันบ้าง

ไม่รู้จะ Query ให้มันจับยังไงดี
5 @R20806
ก็อย่างที่คุณ Khomson บอกครับ ใช้ Max กับ Min ได้ครับ เช่น
ตัวอย่างที่คุณให้มานะครับ สมมุติตารางชื่อ 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 เลยครับ ขอบคุณมากครับ
@ ประกาศใช้งานเว็บบอร์ดใหม่ => บอร์ดเรียนรู้ Access สำหรับคนไทย
แล้วจะใส่ลิ้งอ้างอิงมาที่โพสต์เก่านี้หรือไม่ก็ตามสะดวกครับ
Time: 0.3719s