ลบข้อมูลซ้ำ



0 สมาชิก และ 1 บุคคลทั่วไป กำลังดูหัวข้อนี้

14 มี.ค. 61 , 10:04:40
อ่าน 793 ครั้ง

Un

ลบข้อมูลซ้ำ
« เมื่อ: 14 มี.ค. 61 , 10:04:40 »
ตอนบันทึกข้อมมูลมากๆ เราจำไม่ได้ว่าบันทึกใครไปบ้าง
พอมาดูในฐานข้อมูลเห็นว่ามีข้อมูลบางคนที่บันทึกซ้ำ
อยากจะลบข้อมูลคนที่บันทึกซ้ำต้องเขียน Query ยังงัย
หรือ ใช้โคตยังงัย ให้ลบข้อมูลซ้ำ และเลือกเอาวันที่บันทึก
หลังสุดครับ

มีฟิล Date กับ MemberCode

ขอบคุณครับ

 

14 มี.ค. 61 , 11:16:10
ตอบกลับ #1

ปิ่นณรงค์

> ลบข้อมูลซ้ำ
« ตอบกลับ #1 เมื่อ: 14 มี.ค. 61 , 11:16:10 »
ใช้ ฟังชั้น จากที่โปรแกรมมีมาให้ก็ได้ครับ
ตามในรูปเลย กำหนดว่าจะหาว่า ตรงไหนซ้ำกันแล้วให้แสดงออกมา
:love: :grin:
 

14 มี.ค. 61 , 17:35:18
ตอบกลับ #2

Un

> ลบข้อมูลซ้ำ
« ตอบกลับ #2 เมื่อ: 14 มี.ค. 61 , 17:35:18 »
ผมไม่ได้หาที่ซ้ำครับอาจารย์
ผมต้องการลบข้อมูลที่ซ้ำ
ผมใช้ Query ดึงข้อมูลมา 2 ฟิลด์ คือ
มีฟิลด์ Date กับ MemberCode

ผม Count ที่ Date แล้วใส่เงื่อนไข ว่า
มากกว่า1 ก็จะได้ที่ซ้ำแล้ว ปัญหาคือ
ผมจะลบข้อมูลซ้ำ และเลือกเอาวันที่บันทึก
หลังสุดครับ

 

14 มี.ค. 61 , 17:58:12
ตอบกลับ #3

pizza_p

> ลบข้อมูลซ้ำ
« ตอบกลับ #3 เมื่อ: 14 มี.ค. 61 , 17:58:12 »
ตอนคุณ Count หนะ ให้คุณเพิ่ม Max(Date) ไปด้วย เพื่อจะได้รู้ว่าวันที่หลังสุดคือวันอะไร

 

14 มี.ค. 61 , 18:55:33
ตอบกลับ #4

Un

> > ลบข้อมูลซ้ำ
« ตอบกลับ #4 เมื่อ: 14 มี.ค. 61 , 18:55:33 »
ตอนคุณ Count หนะ ให้คุณเพิ่ม Max(Date) ไปด้วย เพื่อจะได้รู้ว่าวันที่หลังสุดคือวันอะไร
ไม่เข้าใจครับ  Count แล้วจะเพิ่ม Max(Date) ยังงัยครับอาจารย์
พอ Count มันก็จะนับรวมกัน ลบไม่ได้

 

14 มี.ค. 61 , 20:09:12
ตอบกลับ #5

pizza_p

> ลบข้อมูลซ้ำ
« ตอบกลับ #5 เมื่อ: 14 มี.ค. 61 , 20:09:12 »
โค๊ด: [Select]
Private Sub Delete_Last()
Dim MySearch As Recordset

Set MySearch = CurrentDb.OpenRecordset("SELECT tblName.MemberCode, Count(*) AS CountRec, Max(tblName.Date) AS MaxOfDate FROM tblName GROUP BY tblName.MemberCode HAVING (Count(*))>1;")
If MySearch.RecordCount > 0 Then
    MySearch.MoveFirst
    Do While Not MySearch.EOF
        DoCmd.RunSQL "DELETE tblName.* FROM tblName WHERE [MemberCode]='" & MySearch!MemberCode & "' AND [Date]=" & CDbl(MySearch!MaxOfDate)
        MySearch.MoveNext
    Loop
End If

MySearch.Close
Set MySearch = Nothing
   
End Sub

 
โพสต์นี้ได้รับคำขอบคุณจาก: Eik Q Sang

15 มี.ค. 61 , 10:30:16
ตอบกลับ #6

Un

> ลบข้อมูลซ้ำ
« ตอบกลับ #6 เมื่อ: 15 มี.ค. 61 , 10:30:16 »
มัน Error Type missmatch ที่บรรทัดนี้ครับ
DoCmd.RunSQL "DELETE tblName.* FROM tblName WHERE [MemberCode]='" & MySearch!MemberCode & "' AND [Date]=" & CDbl(MySearch!MaxOfDate)

MemberCode ผมเป็น Number (long)
Date เป็น DateTime ครับ

 
โพสต์นี้ได้รับคำขอบคุณจาก: Eik Q Sang

15 มี.ค. 61 , 21:51:05
ตอบกลับ #7

pizza_p

> ลบข้อมูลซ้ำ
« ตอบกลับ #7 เมื่อ: 15 มี.ค. 61 , 21:51:05 »
DoCmd.RunSQL "DELETE tblName.* FROM tblName WHERE [MemberCode]=" & MySearch!MemberCode & " AND tblName.[Date]=" & CDbl(MySearch!MaxOfDate)

แก้ชือตารางให้ตรงด้วยนะครับ

 
โพสต์นี้ได้รับคำขอบคุณจาก: Eik Q Sang

17 มี.ค. 61 , 08:45:30
ตอบกลับ #8

Un

> > ลบข้อมูลซ้ำ
« ตอบกลับ #8 เมื่อ: 17 มี.ค. 61 , 08:45:30 »
DoCmd.RunSQL "DELETE tblName.* FROM tblName WHERE [MemberCode]=" & MySearch!MemberCode & " AND tblName.[Date]=" & CDbl(MySearch!MaxOfDate)

แก้ชือตารางให้ตรงด้วยนะครับ

แก้แล้วครับอาจารย์

 

29 มี.ค. 61 , 11:54:49
ตอบกลับ #9

Un

> ลบข้อมูลซ้ำ
« ตอบกลับ #9 เมื่อ: 29 มี.ค. 61 , 11:54:49 »
 :sweat:

 


บอร์ดเรียนรู้ Access สำหรับคนไทย