Tekrar Eden Kayıtları Bulma ve Silme

Katılım
6 Nisan 2005
Mesajlar
71
Merhaba arkadaşlar. Basit bir sayaç sistemi yapıyorum. Verileri access'e kaydediyorum. Takıldığım bir nokta var. Örneğin benim ip adresim 5.5.5.5.. Bu ip adresi ile 10 kere girersem sayaç +10 artıyor. Oysa aynı ipleri sadece 1 kere saymasını istiyorum.

Veritabanımda IP isimli bir tablo oluşturdum. Değerler ise "id -- member_id -- ip -- date_ip"

ip
5.5.5.5
5.5.5.5
5.5.5.5
5.5.5.5
5.5.5.5
5.5.5.5
5.5.5.5
5.5.5.5
5.5.5.5
5.5.5.5

ASP ile bunu en başında çözmek akıllıca ama benim veritabanı içinde halletmem gerekiyor. Bu tekrarlayan satırları tesbit edip sildirmeliyim. Şu an kolay ama ileride yüzlerce ip olacak.

Bununla ilgili bir makro veya benzeri bir olgu gönderirseniz çok sevinirim.

Şimdiden emeği geçen herkese teşekkürler.
 
Katılım
25 Aralık 2005
Mesajlar
4,160
Excel Vers. ve Dili
MS Office 2010 Pro Türkçe
Sayın tefon,

Yinelemeleri Bul sorgusunu kullanabilirsiniz. Silmek için ise sil sorgusu işinizi görebilir.

Basit bir örnek ekleyin, yardımcı olmaya çalışayım.

İyi çalışmalar
 
Katılım
25 Aralık 2005
Mesajlar
4,160
Excel Vers. ve Dili
MS Office 2010 Pro Türkçe
Sayın tefon,

Bilgisayara yeni oturdum. ama ne yazık ki spywarelerle başım dertte temizlik yapmaya çalışıyorum. Çözümü bugün vermeye çalışacağım.

İyi çalışmalar
 
Katılım
25 Aralık 2005
Mesajlar
4,160
Excel Vers. ve Dili
MS Office 2010 Pro Türkçe
Sayın tefon,

Öncelikle gecikme için kusura bakmayın.

Access de yeni bir sorgu oluşturun. sql cümlesi şöyle olsun:

Kod:
SELECT ip.ip, ip.id, ip.member_id, ip.date_ip
FROM ip
WHERE (((ip.ip) In (SELECT [ip] FROM [ip] As Tmp GROUP BY [ip] HAVING Count(*)>1 )))
ORDER BY ip.ip;
Böylece tekrarlanmış verileri elde etmiş olursunuz.

Daha sonra

Kod:
Dim rs As New ADODB.Recordset
Dim tempIp As String
Dim tempId As Long

rs.Open "ip_yinelenenler", CurrentProject.Connection

Do While Not rs.EOF
    tmpIp = rs(0)
    If rs.EOF Then Exit Sub
        rs.MoveNext
        If rs(0) = tmpIp Then
            tmpId = rs(1)
            CurrentProject.Connection.Execute "DELETE FROM ip WHERE id=" & tmpId
    End If

Loop
rs.Close
Sorguyu ip_yinelenenler olarak kaydedin. Bu sorguyu web sayfasından çağırabilirsiniz. Web sayfanızda hangi dili kullandığınızı bilmiyorum. Ancak yukarıdaki kodlarla silme işlemini gerçekleştirebilirsiniz.

İyi çalışmalar
 

assenucler

Altın Üye
Katılım
19 Ağustos 2004
Mesajlar
3,552
Excel Vers. ve Dili
Ofis 365 TR 64 Windows 11 Home Single Language x64 TR
Altın Üyelik Bitiş Tarihi
29-05-2025
Sayın Modalı;

Günaydın..

Katkınız için teşekkür ederim hocam..

Saygılar..
 
Katılım
6 Nisan 2005
Mesajlar
71
Sayın tefon,

Öncelikle gecikme için kusura bakmayın.

Access de yeni bir sorgu oluşturun. sql cümlesi şöyle olsun:

Kod:
SELECT ip.ip, ip.id, ip.member_id, ip.date_ip
FROM ip
WHERE (((ip.ip) In (SELECT [ip] FROM [ip] As Tmp GROUP BY [ip] HAVING Count(*)>1 )))
ORDER BY ip.ip;
Böylece tekrarlanmış verileri elde etmiş olursunuz.

Daha sonra

Kod:
Dim rs As New ADODB.Recordset
Dim tempIp As String
Dim tempId As Long

rs.Open "ip_yinelenenler", CurrentProject.Connection

Do While Not rs.EOF
    tmpIp = rs(0)
    If rs.EOF Then Exit Sub
        rs.MoveNext
        If rs(0) = tmpIp Then
            tmpId = rs(1)
            CurrentProject.Connection.Execute "DELETE FROM ip WHERE id=" & tmpId
    End If

Loop
rs.Close
Sorguyu ip_yinelenenler olarak kaydedin. Bu sorguyu web sayfasından çağırabilirsiniz. Web sayfanızda hangi dili kullandığınızı bilmiyorum. Ancak yukarıdaki kodlarla silme işlemini gerçekleştirebilirsiniz.

İyi çalışmalar
çok teşekkür ederim. emeğiniz ve elleriniz dert görmesin.
 
Üst